您的问题已经存在三年了,其他答案中没有涵盖一些细节:
我认识的大多数人都使用HomeBrew或MacPorts,我更喜欢 MacPorts,因为它干净利落地切割了默认的 Mac OS X 环境和我的开发设置。只需移出您的/opt文件夹并使用普通用户 Python 环境测试您的包
MacPorts 只能在 Mac 中移植,但通过 easy_install 或 pip,您将学习如何在任何平台(Win/Mac/Linux/Bsd...)中设置您的环境。此外,它总是会更新并有更多的包
我个人让 MacPorts 处理我的 Python 模块以保持一切更新。像任何其他高级包管理器(即:apt-get)一样,它对于具有大量二进制依赖项的模块的繁重工作要好得多。我无法使用easy_install 或pip 构建我的Qt 绑定(PySide)。Qt 非常庞大,需要大量编译。一旦你想要一个需要非 Python 程序使用的库的 Python 包,尽量避免使用 easy_install 或 pip
在某些时候,您会发现 MacPorts 中缺少一些包。我不相信 MacPorts 会给你整个CheeseShop。比如最近需要Elixir模块,但是 MacPorts 只提供 py25-elixir 和 py26-elixir,没有 py27 版本。在这种情况下,您有:
pip-2.7 安装 --user elixir
(确保你总是输入 pip-(version) )
这将在您的主目录中构建一个额外的 Python 库。是的,Python 将使用多个库位置:一个由 MacPorts 控制,一个用户本地一个用于 MacPorts 中缺少的所有内容。
现在请注意,我更喜欢 pip 而不是 easy_install。您应该避免使用 setuptools 和 easy_install 是有充分理由的。这是一个很好的解释,我尽量远离他们。pip 的一个非常有用的功能是为您提供使用 MacPorts、easy_install 和 pip 本身安装的所有模块(及其版本)的列表:
pip-2.7 冻结
如果您已经开始使用 easy_install,请不要担心,pip 可以识别 easy_install 已经完成的所有操作,甚至可以升级使用它安装的软件包。
如果您是开发人员,请留意virtualenv以控制不同的设置和模块版本的组合。其他答案已经提到了它,到目前为止没有提到的是Tox模块,这是一个用于测试你的包在不同 Python 版本中正确安装的工具。
虽然我通常没有版本冲突,但我喜欢使用 virtualenv 来设置一个干净的环境并清楚地了解我的包依赖项。这样我就永远不会忘记 setup.py 中的任何依赖项
如果您选择 MacPorts,请注意不再选择同一个包的多个版本,就像带有额外 python_select 包的旧 Debian 风格(它仍然存在以保持兼容性)。现在您可以使用 select 命令来选择要使用的 Python 版本(您甚至可以选择 Apple 安装的版本):
$ port select python
Available versions for python:
none
python25-apple
python26-apple
python27 (active)
python27-apple
python32
$ port select python python32
在上面添加 tox,你的程序应该是真正可移植的