我已经阅读了一些关于.egg文件的内容,我已经在我的lib目录中注意到了它们,但是当时作为开发人员使用它的优点/缺点是什么?
答案 0 :(得分:30)
来自Python Enterprise Application Kit community:
“鸡蛋是蟒蛇,因为罐子是Java ......”
Python egg是一种捆绑方式 Python的其他信息 项目,允许项目的 要检查的依赖项和 在运行时满意,以及 允许项目提供插件 对于其他项目。有几个 包含鸡蛋的二进制格式,但是 最常见的是'.egg'zipfile 格式,因为它是一个方便的 用于分发项目。全部 格式支持包括 特定于包的数据,在整个项目范围内 元数据,C扩展和Python 代码。
Python Eggs的主要好处 是:
- 等工具
他们启用“简易安装”Python包管理器
.egg文件是Python的“零安装”格式 包;没有构建或安装步骤 要求,只需将它们放在PYTHONPATH上 或sys.path并使用它们(可能需要 如果是C扩展,则安装运行时 或使用数据文件)
他们可以包含包元数据,例如他们依赖的其他鸡蛋
它们允许“命名空间包”(仅包含其他包的包) 包)被拆分成单独的 分发(例如zope。,twisted。, peak。*包可以分发为 与普通包装不同,鸡蛋分开 必须始终放在 相同的父目录。这允许 什么是现在巨大的单片包 分开分发 组件)。
它们允许应用程序或库指定所需的 库的版本,以便你可以 例如要求( “扭因特网&GT = 2.0”) 在进行导入之前 twisted.internet。
它们是分发扩展程序或插件的绝佳格式 可扩展的应用程序和框架 (例如Trac,它使用鸡蛋 插件为0.9b1),因为蛋 运行时提供了简单的API来定位 鸡蛋,并找到他们的广告条目 点(类似于Eclipse的 “延伸点”概念)。
标准化也可能带来其他好处 格式,类似于的好处 Java的“jar”格式。
- 亚当
答案 1 :(得分:5)
一个鸡蛋本身并不比一个合适的源释放更好。好的部分是依赖性处理。像debian或rpm软件包一样,你可以说你依赖其他鸡蛋,它们会自动安装(通过pypi.python.org)。
第二条评论:egg格式本身是二进制打包格式。由python代码组成的普通python包最好作为“源代码发布”分发,因此“python setup.py sdist”会产生.tar.gz。当上传到pypi时,这些通常也被称为“鸡蛋”。
你需要二进制蛋的地方:当你捆绑一些C代码扩展时。你需要几个二进制蛋(32位unix,一个windows等)。
答案 2 :(得分:4)
鸡蛋是分发python应用程序的一种非常好的方式。可以把它想象成一个独立于平台的.deb文件,它将安装所有依赖项和诸如此类的东西。优点是它易于为最终用户使用。缺点是将您的应用程序打包为.egg文件可能很麻烦。
除了.eggs之外,您还应该提供另一种安装方式。有些人不喜欢使用鸡蛋,因为他们不喜欢软件程序安装任何软件的想法。这些通常是系统管理员类型。
答案 3 :(得分:3)
.egg文件基本上是部署python应用程序的好方法。您可以将其视为类似Java的.jar文件。
更多信息here。
答案 4 :(得分:1)
无论您做什么,也不要停止分发您的应用程序,作为tarball,因为这是包装系统操作系统最简单的可打包格式。
答案 5 :(得分:1)
对于简单的Python程序,您可能不需要使用鸡蛋。分发原始.py文件应该足够了;这就像分发GNU / Linux的源文件一样。您还可以使用各种OS“打包器”(如py2exe或py2app)为不同的操作系统创建.exe,.dmg或其他文件。
更复杂的程序,例如由于各种模块和依赖性,Django几乎需要蛋。