为什么easy_install只能解压一些python eggs而不能解压其他的?

19
在我的/usr/local/lib/python.../dist-package目录下,我有.egg文件夹和.egg文件。
为什么安装程序选择将软件包提取到.egg目录中,而将其他具有.egg扩展名的文件保留?

请参考以下链接:https://dev59.com/0rnoa4cB1Zd3GeqPLi1e#60166477 - 0 _
请参考以下链接:https://dev59.com/Ao_ea4cB1Zd3GeqPUOS9#33014444 - 0 _
请参考以下链接:https://stackoverflow.com/a/7287318/1959808 - 0 _
2个回答

32

如果包只包含纯Python代码,可以将其保留为egg文件。Python解释器可以直接从egg加载Python模块。如果包含使用C或其他数据编写的模块,则需要提取egg以便访问C模块和/或数据。我相信这是包的默认行为。较新版本的Python可能能够从egg文件加载C模块;对于这一点我不太确定。

软件包的创建者还可以通过在其setup.py中使用 setup() 时传递 zip_safe = False,明确指示安装程序解压缩软件包。

最后,进行安装的人可以通过传递-Z选项或在pydistutils.cfg中设置zip_ok = False来明确告诉easy_install解压缩egg文件。


5

我无法解释为什么有些鸡蛋是压缩文件,而有些是目录,但我可以提供以下建议:如果你不喜欢压缩的鸡蛋(就像我一样),请将以下内容放在~/.pydistutils.cfg文件的[easy_install]部分:

zip_ok = false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接