为什么easy_install提取某些python eggs而不是其他的?
我在我的 /usr/local/lib/python.../dist-package 目录里,发现有 .egg
目录和 .egg
文件。
为什么安装程序会把额外的包放到 .egg
目录里,而其他带有 .egg
后缀的文件却不放进去呢?
2 个回答
5
我不能解释为什么有些文件是压缩包(也就是“zipped eggs”),而有些是文件夹,但我可以给你一个建议:如果你像我一样讨厌压缩包,可以把下面这段内容放到你电脑上~/.pydistutils.cfg
文件的[easy_install]
部分:
zip_ok = false
32
如果一个包里面只有纯Python的代码,那它可以直接以egg文件的形式存在。Python解释器可以直接从这个egg文件中加载Python模块。如果这个包里面有用C语言写的模块或者其他数据,那就需要把egg文件解压出来,这样才能访问到C模块或者数据。我觉得这就是包的默认行为。新的Python版本可能能够直接从egg文件加载C模块,但我对这一点不太确定。
包的创建者也可以特别指示安装程序解压这个包,方法是在他们的setup.py
文件里的setup()
函数中传入 zip_safe = False
。
最后,进行安装的人可以明确告诉easy_install
要解压egg文件,方法是传入 -Z
选项,或者在pydistutils.cfg
文件中设置zip_ok = False
。