我已经阅读了一些关于.egg文件的内容,我已经在我的lib目录中注意到了它们,但是当时作为开发人员使用它的优点/缺点是什么?
来自Python企业应用程序套件社区:
"鸡蛋到达蟒蛇,就像罐子里的爪哇......"
Python egg是一种通过Python项目捆绑附加信息的方法,它允许在运行时检查和满足项目的依赖项,以及允许项目为其他项目提供插件.有几种二进制格式包含鸡蛋,但最常见的是'.egg'zipfile格式,因为它是一个方便的分发项目.所有格式都支持包括特定于程序包的数据,项目范围的元数据,C扩展和Python代码.
Python Eggs的主要好处是:
他们启用了像"Easy Install"Python包管理器这样的工具
.egg文件是Python包的"零安装"格式; 不需要构建或安装步骤,只需将它们放在PYTHONPATH或sys.path上并使用它们(如果使用C扩展或数据文件,可能需要安装运行时)
它们可以包括包元数据,例如它们所依赖的其他蛋
它们允许"名称空间包"(仅包含其他包的包)被拆分为单独的发行版(例如zope.,twisted.,peak.*包可以作为单独的蛋分发,不像普通包必须始终放在相同的包下父目录.这允许现在巨大的单片包作为单独的组件分发.)
它们允许应用程序或库指定所需的库版本,因此您可以在执行twisted.internet导入之前例如要求("Twisted-Internet> = 2.0").
它们是一种很好的格式,用于将扩展或插件分发到可扩展的应用程序和框架(例如Trac,它使用插件从0.9b1开始使用插件),因为egg运行时提供了简单的API来定位egg并找到他们广告的入口点(类似到Eclipse的"扩展点"概念).
还有其他好处可能来自标准化格式,类似于Java的"jar"格式的好处.
-亚当
一个鸡蛋本身并不比一个合适的源释放更好.好的部分是依赖性处理.像debian或rpm软件包一样,你可以说你依赖其他鸡蛋,它们会自动安装(通过pypi.python.org).
第二条评论:egg格式本身是二进制打包格式.由python代码组成的普通python包最好分发为"源代码发布",因此"python setup.py sdist"会产生.tar.gz.当上传到pypi时,这些通常也被称为"鸡蛋".
你需要二进制蛋的地方:当你捆绑一些C代码扩展时.你需要几个二进制蛋(32位unix,一个windows等).