背景:
由于我开发的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/
.我下载了setuptools
python 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
取决于你的PATH
not 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
命令。