选择Python版本进行egg安装或并行安装site-package版本
通过 fink install
命令,我在我的 Mac OS X 电脑上安装了以下 Python 版本:
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
吗?我该如何安装一个 site-package,使得它可以在不同的 Python 版本中使用?
2 个回答
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
编辑:在阅读这个内容之前,请先查看 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代码……