我已经阅读了一些关于 .egg 文件的内容,并且在我的 lib 目录中注意到了它们,但是作为开发人员使用的优点/缺点是什么?
6 回答
来自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”格式的好处。
-亚当
一个鸡蛋本身并不比一个适当的源版本更好。好的部分是依赖处理。就像 debian 或 rpm 包一样,你可以说你依赖于其他鸡蛋,它们会自动安装(通过pypi.python.org)。
第二条评论:egg 格式本身是一种二进制打包格式。仅包含 python 代码的普通 python 包最好作为“源版本”分发,因此“python setup.py sdist”会生成 .tar.gz。当上传到 pypi 时,这些通常也称为“eggs”。
您需要二进制鸡蛋的地方:当您捆绑一些 C 代码扩展时。然后,您将需要几个二进制鸡蛋(一个 32 位 unix 一个,一个 windows 一个,等等)。
Eggs 是分发 python 应用程序的一种很好的方式。将其视为一个独立于平台的 .deb 文件,它将安装所有依赖项和诸如此类的东西。优点是最终用户易于使用。缺点是将您的应用程序打包为 .egg 文件可能很麻烦。
除了 .eggs 之外,您还应该提供另一种安装方式。有些人不喜欢使用鸡蛋,因为他们不喜欢软件程序安装它想要的任何软件的想法。这些通常是系统管理员类型。
.egg 文件基本上是部署 python 应用程序的好方法。您可以将其视为类似于 Java 的 .jar 文件。
更多信息在这里。
无论你做什么,都不要停止分发你的应用程序,同样,作为一个 tarball,因为对于具有包系统的操作系统来说,这是最容易打包的格式。
对于简单的 Python 程序,您可能不需要使用鸡蛋。分发原始 .py 文件就足够了;这就像为 GNU/Linux 分发源文件。您还可以使用各种操作系统“打包程序”(如 py2exe 或 py2app)为不同的操作系统创建 .exe、.dmg 或其他文件。
由于需要各种模块和依赖项,更复杂的程序,例如 Django,几乎都需要鸡蛋。