Ale*_*lex 21 linux python software-installation
背景:
由于我开发的python程序必须在不同的python版本上运行,所以我在我的电脑上安装了不同版本的python。
我使用的是 FC 13,所以它预装了 python 2.6/usr/bin/python2.6和/usr/lib/python2.6.
我安装源蟒蛇2.5,并且让事情变得整齐,我用的--prefix=/usr选项,这在安装蟒蛇/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
Run Code Online (Sandbox Code Playgroud)
似乎 python2.5 不在我的 PYTHONPATH 中。我认为默认安装会将自己添加到 PYTHONPATH,但是当我echo $PYTHONPATH在 promt写入时,我只收到一个空行。
VPe*_*ric 20
安装多个 Python 版本的推荐方法是从源代码安装每个版本 - 它们将愉快地共存。然后,您可以使用带有适当解释器的 virtualenv 来安装所需的依赖项(使用 pip 或 easy_install)。从源代码更轻松地安装多个解释器的技巧是使用:
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)
而不是更常见的“sudo make install”。这会将版本号添加到可执行文件中(因此您将拥有 python-2.5、python-2.6、python-3.2 等),从而防止与 Python 的系统版本发生任何冲突。
Ada*_*tek 13
这听起来像是virtualenv的完美应用,这是一种非常流行的用于创建隔离 Python 环境的工具。这是一个指定 Python 版本的示例命令
$ virtualenv --python=/usr/bin/python2.6 myvirtualenv
Run Code Online (Sandbox Code Playgroud)
使用
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 ...
Run Code Online (Sandbox Code Playgroud)
严格来说virtualenv在这里没有帮助,因为它必须在基本Python的上下文中创建,这与运行easy_install. 这就是--python论证的virtualenv目的。由于某种原因easy_install,没有提供类似的参数,因此它必须使用特定的 Python 解释器运行,如上所示。