您的问题已经三年了,其他答案中有些细节没有涉及:
我认识的大多数人都使用HomeBrew或MacPorts,我更喜欢MacPorts,因为它干净地切割了默认的Mac OS X环境和我的开发设置。只需移出您的/opt文件夹并用普通用户Python环境测试您的程序包。
MacPorts仅在Mac内部可移植,但使用easy_install或pip,您将学习如何在任何平台(Win/Mac/Linux/Bsd...)上设置您的环境。此外,它始终会更加更新和具备更多的程序包。
我个人使用MacPorts来管理我的Python模块以确保所有内容都是最新的。与任何其他高级程序包管理器(例如:apt-get)一样,它非常适合处理具有许多二进制依赖项的模块。如果您想要一个需要由非Python程序使用的库支持的Python软件包,尽量避免使用easy_install或pip。
在某些时候,您会发现MacPorts中缺少一些程序包。我不相信MacPorts会提供完整的CheeseShop。例如,最近我需要Elixir模块,但是MacPorts仅提供了py25-elixir和py26-elixir版本,没有py27版本。在这种情况下,您可以使用以下命令:
pip-2.7 install --user elixir
(确保您始终输入pip-(version))
这将在您的主目录中构建一个额外的Python库。是的,Python可以处理多个库位置:由MacPorts控制的和本地用户缺失于MacPorts之外的位置。
现在,请注意,我喜欢使用pip而不是easy_install。有一个很好的理由要避免setuptools和easy_install。这里是一个好的解释,而我尽量避免它们。pip非常有用的一个特性是,它可以给您提供一个列表,其中包含所有已使用MacPorts、easy_install和pip自身安装的模块(以及它们的版本):
pip-2.7 freeze
如果您已经开始使用easy_install,不用担心,pip可以识别已经使用easy_install安装的所有内容,甚至升级已经安装的软件包。
如果您是开发人员,请关注virtualenv以控制不同设置和模块版本的组合。其他答案已经提到了它,但迄今为止还没有提到的是Tox模块,这是一个测试您的软件包是否能够在不同的Python版本上正确安装的工具。
虽然我通常没有版本冲突,但我喜欢使用virtualenv来设置干净的环境,并清楚地查看我的程序包依赖项。这样,我就不会忘
$ port select python
Available versions for python:
none
python25-apple
python26-apple
python27 (active)
python27-apple
python32
$ port select python python32
在其之上添加tox,你的程序就能真正地实现可移植性。