关于初学者OSX上的python包管理的常识建议

时间:2011-01-29 08:32:48

标签: python installation packages macports homebrew

如果我在OSX(Snow Leopard)上学习python开发,我应该如何最好地管理我的python包?

我对那里有大量优秀的python包感到非常兴奋。我很想开始学习它们,但包管理让我完全糊涂了。显然我不知道我在做什么。我在Stack Overflow上看到很多关于包管理的问题,人们经常通过说“你为什么不使用 x 来回答它们?看看我从shell复制的这一行有多容易,“

$ x install something

x 无法处理某些特定依赖项或无法处理包 y 之前,这是一个很好的答案。这是我已经尝试过的:

  1. 我开始只使用easy_install安装内容。
  2. 我很快发现一些重要的软件包缺少依赖项(PIL) 所以我一直在寻找MacPorts
  3. 我开始使用MacPorts并且我的所有环境变量都非常令人困惑,因此我学会了足够的bash来重新配置PATHPYTHONPATHsys.path以使事情正常工作(并使我的终端窗口看起来很甜)。 MacPorts似乎很有用。
  4. 但后来我对我使用的不同模块版本感到困惑,我发现了更多依赖问题(GDAL)...
  5. 然后几个非常聪明的人强烈建议我切换到Homebrew。 所以我卸载了MacPorts并安装了Homebrew。
  6. 现在我有了Homebrew,我似乎无法安装任何东西,因为我不知道如何为我想要使用的大多数python包创建Formula。如果在pypi列出了一个包,我不知道我是否应该使用Homebrew,或者只是弄清楚如何配置easy_install来安装到Homebrew目录。我仍然不知道如何最好地处理缺少的依赖项。也许有一些与python相关的公式的秘密存储库?或者将portfiles转换为公式的简单方法?
  7. 我知道正确的答案可能取决于我正在尝试安装的内容。我正在尝试安装让我这样的软件包:

    1. 使用python玩游戏并自动化所有内容
      • appscript
      • PIL
      • pygame的
    2. 在python中进行GIS相关的工作
      • GDAL
      • 匀称
      • PostGIS的
      • SciPy的
    3. 探索网络应用程序的奇妙可能性
      • django的
      • 谷歌应用内发动机
    4. 我完全愿意擦掉我机器上的所有东西,现在它必须有点杂乱的包裹。如果我应该学习virtualenv,或者只是学习更多关于检查依赖关系和自己安装它们的基本过程,我很乐意这样做。如果我应该深入了解Homebrew,我也很乐意这样做。我应该如何处理这些问题,这些问题通常会阻止我做我真正想做的事情(使用python制作简洁的东西)?

3 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

在我看来,处理python包的最佳方法是将一组Python安装与系统Python分开,每个版本对应一个所需的版本。 这样我就不会使用旧版本的软件包污染主python,我可以删除它们并在没有任何项目出现问题的情况下重新安装它们。

详细说明:

在OS X上,使用Macports版本很好。对于自制软件来说也是如此,尽管我从未使用它。 (在Linux上我将Python从源码安装到/ opt / pythonxx /,例如/ opt / python25 /,/ opt / python26 /,/ opt / python27和/ opt / python31。)

然后永远不会在这些Pythons中安装任何软件包,virtualenvdistributepip除外,我安装在所有这些软件包中。当我想为项目安装一个包时,我使用我使用的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,那就是您需要做的全部。