我维护一些Python包。我有一个非常相似的setup.py
文件为他们每个人。但是,在做setup.py install
时,我的一个软件包被安装为一个蛋,而其他软件被安装为“蛋文件夹”,即扩展名为“蛋”的文件夹。Python:为什么有些软件包被安装成鸡蛋,有些软件包被安装成“蛋文件夹”?
他们之间的区别是什么导致这种不同的行为?
我维护一些Python包。我有一个非常相似的setup.py
文件为他们每个人。但是,在做setup.py install
时,我的一个软件包被安装为一个蛋,而其他软件被安装为“蛋文件夹”,即扩展名为“蛋”的文件夹。Python:为什么有些软件包被安装成鸡蛋,有些软件包被安装成“蛋文件夹”?
他们之间的区别是什么导致这种不同的行为?
:
如果
zip-safe
存在,这意味着当为.egg
压缩文件安装项目将正常工作,而相反的not-zip-safe
的存在意味着该项目不应该被安装为.egg
文件[即。作为.egg
目录]。 setuptools'setup()
的zip_safe
选项确定将写入哪个文件。如果没有提供选项,setuptools会根据代码和内容分析尝试自行评估软件包是否可以工作。
是什么使项目安全可靠?你为什么要选择一个或另一个? (我问是否有人打包一个项目。) – 2012-03-09 17:31:58
来自setuptools文档:http://peak.telecommunity.com/DevCenter/setuptools#setting-the-zip-safe-flag – saffsd 2013-04-08 00:15:30
一个鸡蛋文件实际上是一个内部具有特定目录结构的zip文件。根据zipimport文档,只能从zip文件导入.py
,.pyc
和.pyo
文件。因此,如果程序包需要导入其他类型的模块资源(如编译后的c代码; .so
文件,.pyd
文件),它将不能用作zip文件。
我不知道这是否是只有有理由认为有些鸡蛋不能用作zip压缩文件,但我认为这是主要原因。
这不是主要原因。这甚至不是一个正确的理由。 setuptools增加了特殊的加载器,使.so和.pyd文件即使在压缩的蛋中也能正常工作。另一个答案是正确的。 – 2010-05-24 16:05:07
(我在Windows XP上。) – 2010-05-09 17:09:34