将python库/应用程序打包为.egg文件有什么好处?

时间:2008-09-06 23:35:31

标签: python zip packaging software-distribution egg

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

6 个答案:

答案 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几乎需要蛋。