在Mac上为非默认版本的Python安装模块
我在我的Mac上安装了几个不同版本的Python。默认的版本是2.5,所以当我安装一个模块时,它会被安装到2.5上。我需要能够把一些模块安装到另一个版本的Python,因为我正在做的项目使用的是不同的版本。有没有人知道怎么做到这一点?谢谢大家的帮助。
3 个回答
如果你是通过 macports 安装的,那么你需要以管理员身份运行:
port select --set python <python_version>
提示:要查看可用的版本,可以运行:
port select --list python
否则,你可以设置 $PYTHON_PATH
这个环境变量,并把你想要的 python 路径添加到你的 $PATH
环境变量中。
你还需要更新 /Library/Frameworks/Python.framework
目录下的 python.current
(或者类似名字的)符号链接。
我强烈建议你使用包管理工具(比如 homebrew、macports、fink 等)来安装所有版本,这样管理起来会更方便。
如果你是通过setuptools来安装东西(也就是用 python setup.py
这个命令),那么它会把文件安装到你所用的Python可执行文件的lib目录下(当然,前提是这个包没有问题)。
如果你是通过setup.py来安装软件,只需要用合适版本的Python来运行它,比如:
python2.6 setup.py install
如果你使用的是easy_install,那么应该有一个对应Python版本的easy_install-N.N,比如:
easy_install-2.6 some_module
如果你在做不同的项目,而这些项目需要不同版本的Python,可以考虑使用virtualenv(还有virtualenvwrapper)——它可以让你启动和使用多个环境,每个环境都有自己版本的Python和一套库。使用示例可能是这样的:
$ python -V
Python 2.5.4
$ mkvirtualenv --python=python2.6 foo
foo $ python -V
Python 2.6.1
foo $ pip install some_mod # installs module in foo's library, rather
# than site wide
foo $ deactivate # leave the virtual env
$ python -m some_mod
/path/to/python: No module named some_mod
如果你想稍后再回到foo环境,可以使用workon
:
$ workon foo
foo $ python -m some_mod # no error, apns available within the env
foo $
所以你可以用virtualenv来为你安装的每个Python版本维护独立的环境。在这些环境里,pip和easy_install会自动处理好一切。