使用不同版本的Python

使用不同版本的Python

背景:

由于我开发的python程序必须在不同的python版本上运行,所以我在我的计算机上安装了不同版本的python。

我使用的是 FC 13,因此它预装了 python 2.6/usr/bin/python2.6/usr/lib/python2.6

我从源代码安装了 python 2.5,为了保持整洁,我使用了该--prefix=/usr选项,该选项将 python 安装在/usr/bin/python2.5和中/usr/lib/python2.5

现在,当我运行时,python提示符显示我正在使用 2.5 版本。但是,我在安装时遇到了一些问题。

包管理:

使用 easy_install,软件包始终安装在/usr/lib/python2.6/site-packages/.我下载了setuptoolspython 2.5 的 .egg 并尝试安装它,但它给了我一个错误:

/usr/lib/python2.5/site-packages does NOT support .pth files

看来python2.5不在我的PYTHONPATH中。我认为默认安装会将其自身添加到 PYTHONPATH 中,但是当我echo $PYTHONPATH在 promt 中写入时,我只收到一个空行。

答案1

安装多个 Python 版本的推荐方法是从源代码安装每个版本 - 它们会愉快地共存。然后,您可以使用 virtualenv 和适当的解释器来安装所需的依赖项(使用 pip 或 easy_install)。从源代码更轻松地安装多个解释器的技巧是使用:

sudo make altinstall

而不是更常见的“sudo make install”。这会将版本号添加到可执行文件(因此您将拥有 python-2.5、python-2.6、python-3.2 等),从而防止与 Python 系统版本发生任何冲突。

答案2

这听起来像是一个完美的应用程序虚拟环境,一个非常流行的用于创建隔离的 Python 环境的工具。这是指定 Python 版本的示例命令

$ virtualenv --python=/usr/bin/python2.6 myvirtualenv

答案3

使用easy_install,软件包始终安装在 /usr/lib/python2.6/site-packages/

这是因为 distutils 向所有正在安装的脚本中添加了 shebang 行。如果直接运行easy_install脚本,它将使用安装的解释器执行(根据 shebang 行)。正在运行哪个easy_install取决于你的PATHnot PYTHONPATH。如果您想在 Python 2.5 实例中安装包,您应该运行并easy_install指定要使用的 Python 解释器:

/usr/bin/python2.5/python easy_install ...

严格来说,virtualenv这里没有帮助,因为它必须在以下上下文中创建根据Python 这与运行easy_install.这就是--python论证的virtualenv目的。由于某种原因easy_install没有提供类似的参数,因此它必须使用特定的 Python 解释器运行,如上所示。

答案4

Virtualenv 在这里绝对是天赐之物。

在我的设置中,我将环境变量VIRTUALENV_USE_DISTRIBUTE设置为 1,以便使用更现代的 Distribute 包而不是 setuptools。我在我的系统上为两个版本的 Python 创建了虚拟环境,如下所示:

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

然后我在中创建了三个别名.bashrc

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

因此,我可以py2切换到默认的 Python 2.6 并py3切换到默认的 Python 3.2。输入idle将运行适合我所在虚拟环境的 IDLE 版本。

将软件包安装到这些虚拟环境之一通常只需要一条pip install命令。

相关内容