我们如何在同一个 Ubuntu OS 上分别使用、维护和安装 python 2.7 和 python 3.5 的库?

How do we separately use, maintain & install libraries for python 2.7 and python 3.5 on the same Ubuntu OS?

我需要在 Ubuntu 16.04.1 LTS 上同时使用 Python 2.7.12 和 python 3.5.2。 Python 3 是预装的,所以我不知道它在目录路径方面的位置,而 python 2 位于 /usr/local/lib/python2.7/.

我在 SO 和 askubuntu 上发现了很多关于如何安装的问题,但没有关于如何单独使用它们,安装不同的库,以及如果我维护这个双重 python 长期的事情?例如,我通常 运行 pip install 来安装一个库,我可以检查它是否安装在我的 python2 目录中,但是如何为我的 python3 安装相同的包而不发生冲突?类似于:python3 pip install <package> ??默认的 python3 安装在哪里?我如何为 python 不是命令一部分的路径调用 python3,例如:pip freezesudo-apt get 等?

PS:我还没有正式使用 Virtualenv,但我被告知这通常有助于在 python 语言版本中隔离项目,而不是从中隔离两个不同的语言版本彼此。

请告诉我。

谢谢

这绝对没问题,因为 Python 会为您做到这一点。你根本不需要 virtualenv。

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

如果您使用 pip 安装额外的软件包,您可以使用 pip 脚本并附加版本号:pip2.7pip3.5,或者,我的首选方法,调用 pip 作为相应 Python 可执行文件的模块:

python2.7 -m pip install <whatever>

python3.5 -m pip install <whatever>

除此之外,应该没有任何问题:Python 将包存储在完全独立的目录中,并且每个 Python 可执行文件仅使用其各自的指令。

不要不要 fiddle 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

关于 OS 安装的 Python 可执行文件的注意事项:

Python 3.5 住在 /usr/bin/python3.5,Python 2.7(OS 住在 /usr/bin/python2.7。 您甚至可以在 本地安装的 /usr/local/bin/python2.7 旁边使用 OS 2.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 可执行文件。)