2016-11-15 67 views
2

我需要在Ubuntu 16.04.1 LTS上同时使用Python 2.7.12和python 3.5.2。 Python 3是预装的,所以我不知道它在哪里,根据目录的路径,而Python 2坐在/usr/local/lib/python2.7/如何在相同的Ubuntu操作系统上分别使用,维护和安装python 2.7和python 3.5的库?

我在SO和askubuntu上发现了很多关于如何安装的问题,但没有提到如何分别使用它们,安装不同的库,以及我应该避免或小心的问题,如果我维护这个双重python的东西长期?例如,我通常运行pip install来安装库,我可以检查它是否安装在我的python2目录中,但是如何在没有冲突的情况下为我的python3安装相同的包?例如:python3 pip install <package> ??在哪里安装了默认的python3?而我怎么打电话python3的路径,其中python不是该命令的一部分,例如:pip freeze,sudo-apt get等? PS:我还没有正式与Virtualenv一起工作,但我已经被告知通常对于在Python语言版本中隔离项目非常有用,而不是隔离两个不同的语言版本。

请让我知道。

谢谢

+0

你可以使用python2和python3。 Python3应该位于/usr/local/lib/python3.x中,以运行pythonx写入pythonx scrypt.py – eyllanesc

+0

'/ usr/local/lib/python3.x'只包含一个名为dist-packages的目录,它本身就是空。所以我最初认为它的ghost文件夹和python3并没有真正安装,但是当我在终端中运行'python3'时,我得到:'Python 3.5.2(默认,2016年7月5日,12:43:10) [GCC 5.4。 0 20160609] on linux 输入“help”,“copyright”,“credits”或“license”以获取更多信息。“所以我不知道该路径是否正确.. –

+0

是的,这是正确的 – eyllanesc

回答

6

这绝对没有问题,因为Python会为您做这件事。你根本不需要virtualenv。

如果你使用Ubuntu的软件包,请确保您使用python3-版本的Python 3,和正常python-版本的Python 2
例如,python3-numpypython-numpy

如果使用pip安装额外的软件包,你一个既可以使用pip脚本附加版本号:pip2.7pip3.5,或者,我的首选方法,调用pip作为各自的Python可执行模块:

python2.7 -m pip install <whatever> 

python3.5 -m pip install <whatever> 

除此之外,不应该有任何问题:Python的专卖店在完全不同的目录包,和EA ch Python可执行文件只使用其各自的指令。

不是摆弄PYTHONPATH,除非你真的知道你在做什么。这有可能将您的PYTHONPATH设置为使用Python 2.7模块的目录,然后使用Python 3.5来运行。


如果您从头开始,您可能需要先安装pip

对于系统的Python(S),使用相关的包:

sudo apt install python-pip 
sudo apt install python3-pip 

对于您的本地安装的Python(S),利用内置的引导程序模块:

pythonx.y -m ensurepip 

有关操作系统安装的Python可执行文件的注意事项:

Python 3.5位于/usr/bin/python3.5,Python 2.7(OS一)位于/usr/bin/python2.7。 你甚至可以使用OS 2.7的一个旁边的您的本地安装/usr/local/bin/python2.7(并因为您使用了错误的软件包而无法找到软件包时无法找到)。
或者在Python 3.5旁边安装Python 3.6(假如您已经使用了make altinstall,那么python3不会被覆盖)。

这也是为什么你真的不希望运行pip(甚至pip2.7的是pip2.7可以让你的系统中的一个,而不是一个在/usr/local/bin/pip2.7,这取决于你PATH

(这同样为python2.7可执行文件,所以如果你需要指定的完整路径/usr/local/bin/python2.7来运行一个(或有一个别名),同样适用于pip2.7。如果,另一方面,/usr/local/bin你的PATH上的第一个,你应该原则上不会碰到相同的pippython可执行文件。)

+0

'python2.7 -m pip freeze'和'python3.5 -m pip freeze',返回'/usr/local/bin/python2.7:没有名为pip的模块和'/usr/bin/python3.5:没有分别命名为pip的模块。然而,'pip2.7 freeze'工作,而'pip3.5 freeze'返回'pip3.5:command not found'。思考? –

+0

对于3.5,请尝试'sudo apt install python3-pip'。对于Python 2.7,请尝试'/usr/local/bin/python2.7 -m ensurepip'。看起来Ubuntu默认不安装pip。 – Evert

+0

'ensurepip'引导程序模块必须只运行一次,以便自己安装'pip'(并且只适用于您自己安装的python2.7,因为它不包含软件包。“pip2的完整路径是什么.7'你用上面的那个? – Evert

相关问题