当我发布一个程序,我通常只需要创建一个setup.py,并把它PyPI上。 这是安装有画中画,我总是很容易与他人共享。 这对我的作品,显然对于很多人。
我看到制作一个可执行文件,一个deb或RMP,以方便系统管理员的好处。
但我实在看不出使用鸡蛋的地步。 你能告诉我什么可以从中获得什么?
我也曾经读到过这样的鸡蛋有缺点,但我再也找不到这篇文章。 你能描述我也会造成使用这种包装形式的问题?
请注意,我也看到了这个问题 ,但答案也适用于通过setup.py一个简单的目录。 它不告诉我,鸡蛋的好处超过了简单的格式。
蛋依赖于特定的体系结构和python版本,直到3.3的Python,如果蛋含有C的扩展,即使是内部Unicode表示大小(UCS2与UCS4)。
不幸的是,后者的差异没有在蛋元数据捕获; 一个鸡蛋文件名中包含的结构和Python版本(MAJOR.MINOR,所以2.4或3.1),但省略了Unicode字节大小。
正因为如此,鸡蛋不是很便携。 甲.tgz
或.zip
另一方面分布,是(希望)与平台无关。 您的安装工具,无论是easy_install
, pip
, buildout
或什么,知道如何编写一个Python包分配到你一个鸡蛋,所以你通常避免分发.egg
共文件。
唯一的例外是Windows中,大多数人将缺乏工具链编译C扩展。 对于Python默认为UCS2的Windows分发,你通常是安全分发Windows .egg
建立与C扩展包,通过自动化工具,以方便安装。
如果你使用setup.py
脚本来创建分布,是微不足道的上传到PyPI将创建一个唯一来源包。 我可以推荐的Python包装用户指南以获取更多信息。
* .egg是具有通过easy_install的或PIP安装软件包后使用的纯部署格式。
是没有意义的上传文件作为.egg到的PyPI。 人们这样做不知道他们在做什么。
一个适当的PyPI释放是是.tar.gz存档或.zip文件或.exe文件(适用于Windows二进制文件如),但永远都不要一个* .egg文件。
文章来源: What are the benefits and downsides of using the Python packaging *.egg format over a simple directory with setup.py?