我们能否对python包装和进口如何运作有一些明确的认识?

时间:2011-04-19 10:22:42

标签: python packaging

我有机会完成模块的python管理,每次都是一个挑战:包装不是人们每天所做的事情,它成为学习的负担,也是记忆的负担,即使你实际上是这样做的,因为这通常会发生一次。

我想在这里收集有关导入,包管理和分发如何在python中运行的权威概述,以便这个问题成为所有在幕后发生的魔术的明确解释。虽然我理解问题的广泛层面,但这些事情是如此交织在一起,以至于任何有针对性的答案都无法解决主要问题:了解所有工作是什么,什么是过时的,什么是当前的,什么是同一任务的替代品,什么是怪癖。

要引用的关键字列表如下,但这只是一堆样本。还有更多,欢迎您添加其他详细信息。

  • 的PyPI
  • setuptools / Distribute
  • 的distutils
  • 蛋链路
  • PIP
  • 的zipimport
  • site.py
  • 站点包
  • .pth files
  • 的virtualenv
  • 处理鸡蛋中已编译的模块(通过easy_install安装和不安装)
  • 使用get_data()
  • pypm
  • bento
  • PEP 376
  • 奶酪店
  • eggsecutable

链接到其他答案可能是一个好主意。正如我所说,这个问题是为了高级概述。

4 个答案:

答案 0 :(得分:11)

答案 1 :(得分:3)

对于打包问题,这应该有助于http://guide.python-distribute.org/

对于导入,Fredrik Lundh http://effbot.org/zone/import-confusion.htm的旧文章仍然是一个非常好的起点。

答案 2 :(得分:2)

我建议Tarek Ziadek's Book on Python.这里有一章专门介绍包装和发行。

答案 3 :(得分:0)

我认为不需要探索import(Python的命名空间和导入功能是直观的恕我直言)。

我现在只使用pip。我没有遇到任何问题。

然而,包装和分销的主题值得探讨。我会这样说,而不是给出冗长的答案:

我通过简单地复制Pylons或许多其他开源软件包的方式来学习如何打包和分发我自己的“软件包”。然后我将这种模板与阅读文档相结合,进一步充实,并提出了一种可靠的分配方法。

当您为python(distutils和pypi)进行包管理和分发时,它实际上非常强大。我很喜欢它。

[编辑]

我还想补充一下virtualenv。用它。我为每个项目创建了一个virtualenv,我总是使用--no-site-packages;我在virtualev中安装了特定项目所需的所有软件包(即使它们之间都是常见的,比如lxml)。它让所有东西都隔离开来,让我更容易保持分组(而不是试图跟踪python的位置和版本!)

[/编辑]