27

我已经阅读了一些关于 .egg 文件的内容,并且在我的 lib 目录中注意到了它们,但是作为开发人员使用的优点/缺点是什么?

4

6 回答 6

31

来自Python Enterprise Application Kit 社区

“鸡蛋之于 Python 就像罐子之于 Java……”

Python 鸡蛋是一种将附加信息与 Python 项目捆绑在一起的方式,它允许在运行时检查和满足项目的依赖关系,并允许项目为其他项目提供插件。有几种包含鸡蛋的二进制格式,但最常见的是 '.egg' zipfile 格式,因为它便于分发项目。所有格式都支持,包括特定于包的数据、项目范围的元数据、C 扩展和 Python 代码。

Python Eggs 的主要好处是:

  • 它们启用了诸如“Easy Install”Python 包管理器之类的工具

  • .egg 文件是 Python 包的“零安装”格式;不需要构建或安装步骤,只需将它们放在 PYTHONPATH 或 sys.path 上并使用它们(如果使用 C 扩展或数据文件,可能需要安装运行时)

  • 它们可以包含包元数据,例如它们所依赖的其他鸡蛋

  • 它们允许将“命名空间包”(仅包含其他包的包)拆分为单独的发行版(例如 zope. 、twisted.、peak.* 包可以作为单独的鸡蛋分发,这与必须始终放在同一个包下的普通包不同父目录。这允许现在巨大的单体包作为单独的组件分发。)

  • 它们允许应用程序或库指定所需的库版本,以便您可以在导入 twisted.internet 之前例如 require("Twisted-Internet>=2.0")。

  • 它们是向可扩展应用程序和框架(例如 Trac,从 0.9b1 开始使用鸡蛋作为插件)分发扩展或插件的一种很好的格式,因为鸡蛋运行时提供了简单的 API 来定位鸡蛋并找到它们的广告入口点(类似到 Eclipse 的“扩展点”概念)。

  • 标准化格式还有其他好处,类似于 Java 的“jar”格式的好处。

-亚当

于 2008-09-06T23:39:33.623 回答
5

一个鸡蛋本身并不比一个适当的源版本更好。好的部分是依赖处理。就像 debian 或 rpm 包一样,你可以说你依赖于其他鸡蛋,它们会自动安装(通过pypi.python.org)。

第二条评论:egg 格式本身是一种二进制打包格式。仅包含 python 代码的普通 python 包最好作为“源版本”分发,因此“python setup.py sdist”会生成 .tar.gz。当上传到 pypi 时,这些通常也称为“eggs”。

您需要二进制鸡蛋的地方:当您捆绑一些 C 代码扩展时。然后,您将需要几个二进制鸡蛋(一个 32 位 unix 一个,一个 windows 一个,等等)。

于 2008-10-13T14:40:35.553 回答
4

Eggs 是分发 python 应用程序的一种很好的方式。将其视为一个独立于平台的 .deb 文件,它将安装所有依赖项和诸如此类的东西。优点是最终用户易于使用。缺点是将您的应用程序打包为 .egg 文件可能很麻烦。

除了 .eggs 之外,您还应该提供另一种安装方式。有些人不喜欢使用鸡蛋,因为他们不喜欢软件程序安装它想要的任何软件的想法。这些通常是系统管理员类型。

于 2008-09-06T23:43:21.290 回答
3

.egg 文件基本上是部署 python 应用程序的好方法。您可以将其视为类似于 Java 的 .jar 文件。

更多信息在这里

于 2008-09-06T23:39:54.123 回答
1

无论你做什么,都不要停止分发你的应用程序,同样,作为一个 tarball,因为对于具有包系统的操作系统来说,这是最容易打包的格式。

于 2008-09-26T05:26:03.403 回答
1

对于简单的 Python 程序,您可能不需要使用鸡蛋。分发原始 .py 文件就足够了;这就像为 GNU/Linux 分发源文件。您还可以使用各种操作系统“打包程序”(如 py2exe 或 py2app)为不同的操作系统创建 .exe、.dmg 或其他文件。

由于需要各种模块和依赖项,更复杂的程序,例如 Django,几乎都需要鸡蛋。

于 2008-09-26T07:01:59.773 回答