2

通过fink install我将以下 Python 版本放在我的 Mac OS X 计算机上:

  • python2.3,
  • python2.4,
  • python2.5,
  • python2.6.

此外,是我系统上python的别名。python2.6

  1. 我想安装一个egg,例如easy_install networkx-0.36-py2.5.egg,我必须使用python 2.5 而不是2.6 版。python在不更改别名的情况下这可能吗?

  2. 你能告诉我,我是否以及如何安装networkx-0.36-py2.5networkx-1.0rc1-py2.6并行?

  3. 如何以某种方式安装站点包,它可用于不同的 Python 版本?

4

2 回答 2

3

easy_installsetuptools包装的一部分。 Fink对于 python 2.5 和 python 2.6有单独setuptools的包:

fink install setuptools-py25 setuptools-py26

然后,您可以下载并安装networkx到这两个版本:

/sw/bin/easy_install-2.5 networkx
/sw/bin/easy_install-2.6 networkx

如果您需要特定版本的软件包:

/sw/bin/easy_install-2.5 networkx==0.36
/sw/bin/easy_install-2.6 networkx==0.36
于 2009-10-15T10:18:46.947 回答
2

编辑:在阅读此之前阅读Ned Deily 的答案


1.

在我的系统上,每个 python 版本都有不同的 easy_install 脚本:

  • /usr/bin/easy_install-2.5
  • /usr/bin/easy_install-2.6

2.6版本的内容是这样的:

#!/System/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
import sys
sys.argv[0] = sys.argv[0].replace('-2.6', '')
# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c9','console_scripts','easy_install'
__requires__ = 'setuptools==0.6c9'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('setuptools==0.6c9', 'console_scripts', 'easy_install')()
)

现在,如果您的机器上还没有这些脚本,您可以使用上面的模板创建这些脚本。只需更改第一行,使其指向正确的 python 解释器。大概是这样的:

#!/sw/bin/python23

并更改第三行以匹配当前脚本名称;意思是,如果脚本名为 easy_install-2.3,那么它应该如下所示:

sys.argv[0] = sys.argv[0].replace('-2.3', '')

当然,如果您不使用 setuptools 版本 0.6c9,那么您也必须更改它。


另一种方法是运行 easy_install 脚本作为正确 python 版本的参数。像这样:

$ python23 /some/path/easy_install networkx-0.36-py2.5.egg

2.

每个 python 版本都有不同的站点库,因此它们彼此独立。您可以为不同的python版本安装不同的模块和版本

3.

您可以使环境变量 PYTHONPATH 指向一个公共目录或在脚本中将一个公共目录添加到sys.path。但请注意,某些模块仅适用于某些 python 版本,并且包含必须为每个 python 版本编译的 C 代码......

于 2009-10-15T08:46:46.660 回答