在Mac上为非默认版本的Python安装模块

8 投票
3 回答
4943 浏览
提问于 2025-04-16 18:51

我在我的Mac上安装了几个不同版本的Python。默认的版本是2.5,所以当我安装一个模块时,它会被安装到2.5上。我需要能够把一些模块安装到另一个版本的Python,因为我正在做的项目使用的是不同的版本。有没有人知道怎么做到这一点?谢谢大家的帮助。

3 个回答

2

如果你是通过 安装的,那么你需要以管理员身份运行:

port select --set python <python_version>

提示:要查看可用的版本,可以运行:

port select --list python

否则,你可以设置 $PYTHON_PATH 这个环境变量,并把你想要的 路径添加到你的 $PATH 环境变量中。

你还需要更新 /Library/Frameworks/Python.framework 目录下的 python.current(或者类似名字的)符号链接。


我强烈建议你使用包管理工具(比如 等)来安装所有版本,这样管理起来会更方便。

3

如果你是通过setuptools来安装东西(也就是用 python setup.py 这个命令),那么它会把文件安装到你所用的Python可执行文件的lib目录下(当然,前提是这个包没有问题)。

5

如果你是通过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会自动处理好一切。

撰写回答