如果我在OSX(Snow Leopard)上学习python开发,我应该如何最好地管理我的python包?
我对那里有大量优秀的python包感到非常兴奋。我很想开始学习它们,但包管理让我完全糊涂了。显然我不知道我在做什么。我在Stack Overflow上看到很多关于包管理的问题,人们经常通过说“你为什么不使用 x 来回答它们?看看我从shell复制的这一行有多容易,“
$ x install something
在 x 无法处理某些特定依赖项或无法处理包 y 之前,这是一个很好的答案。这是我已经尝试过的:
PATH
,PYTHONPATH
和sys.path
以使事情正常工作(并使我的终端窗口看起来很甜)。 MacPorts似乎很有用。我知道正确的答案可能取决于我正在尝试安装的内容。我正在尝试安装让我这样的软件包:
我完全愿意擦掉我机器上的所有东西,现在它必须有点杂乱的包裹。如果我应该学习virtualenv,或者只是学习更多关于检查依赖关系和自己安装它们的基本过程,我很乐意这样做。如果我应该深入了解Homebrew,我也很乐意这样做。我应该如何处理这些问题,这些问题通常会阻止我做我真正想做的事情(使用python制作简洁的东西)?
答案 0 :(得分:6)
我强烈建议以下内容。我用它们进行基本的包管理。
应该有所帮助的教程/博客:
答案 1 :(得分:3)
在我看来,处理python包的最佳方法是将一组Python安装与系统Python分开,每个版本对应一个所需的版本。 这样我就不会使用旧版本的软件包污染主python,我可以删除它们并在没有任何项目出现问题的情况下重新安装它们。
详细说明:
在OS X上,使用Macports版本很好。对于自制软件来说也是如此,尽管我从未使用它。 (在Linux上我将Python从源码安装到/ opt / pythonxx /,例如/ opt / python25 /,/ opt / python26 /,/ opt / python27和/ opt / python31。)
然后永远不会在这些Pythons中安装任何软件包,virtualenv
,distribute
和pip
除外,我安装在所有这些软件包中。当我想为项目安装一个包时,我使用我使用的python版本为该项目创建了一个virtualenv:
$ cd /home/projects
$ /opt/python27/bin/virtualenv acoolproject
$ cd acoolproject
$ ./bin/pip install ThepackageIneed.
在分别安装每个项目依赖项时,可以避免依赖性问题以及版本冲突和版本混淆。
您可以使用virtualenv启用和禁用环境,我倾向于从不这样做,我明确地使用python可执行文件:
$ ./bin/python main.py
或
$ /home7projects/acoolproject/bin/python
如果我需要你不能用pip安装的东西,比如Plone,或nginx或varnish,我使用zc.buildout来制作一个可复制的环境配置,zc.buildout也将独立运行,所以没有包得到安装在主要的蟒蛇中。
答案 2 :(得分:0)
如果您使用的是Homebrew,您可能希望使用pip
来安装Python包。 pip
可以通过Homebrew安装,但Homebrew不包含其他Python包的公式。但是使用pip安装软件包非常简单 - 就像
$ pip install <package>
(包名可以在PyPI上找到。)如果您通过Homebrew安装了pip,那就是您需要做的全部。