通过fink install
我将以下Python版本放在我的Mac OS X计算机上:
python2.3
,python2.4
,python2.5
,python2.6
。此外,python
是我系统上python2.6
的别名。
我想安装一个egg,例如easy_install networkx-0.36-py2.5.egg
,我必须使用python 2.5而不是2.6版。这是否可以在不更改python
别名的情况下实现?
您能否告诉我,是否以及如何同时安装networkx-0.36-py2.5
和networkx-1.0rc1-py2.6
?
如何以某种方式安装网站包,它可用于不同的Python版本?
答案 0 :(得分:3)
easy_install
是setuptools
包的一部分。 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
答案 1 :(得分:2)
修改:在阅读本文之前阅读Ned Deily's answer
<强> 1 强>
在我的系统上,每个python版本都有不同的easy_install脚本:
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版本都有一个不同的site-lib,因此它们彼此独立。您可以为不同的python版本安装不同的模块和版本
第3 强>
您可以将env变量PYTHONPATH指向公共目录,或者在脚本中将公共目录添加到 sys.path 。但请注意,某些模块仅适用于某些python版本,并且包含必须为每个python版本编译的C代码...