是否可以使带有 None zip-safe 标志的 eggs 默认使用 Distribute 进行压缩安装?
我们正在将一个大型的Python项目从使用旧版的“setuptools”升级到使用“distribute”,这两个工具可以互相替代。
我们发现这两个工具之间有一个比较麻烦的区别:在setuptools中,如果一个包的zip-safe标志没有定义,系统会默认认为它是zip-safe的,并且会以压缩文件的形式安装(除非用户特别指定不这样做)。
而在新的Distribute中,所有的包默认都被认为不是zip-safe的(会以解压的形式安装),只有当它们的zip-safe标志明确设置为True时,才会被认为是zip-safe。
因此,之前只需将.egg文件复制到site-packages文件夹中的包,现在需要解压到site-packages文件夹中。理想情况下,我希望新的distribute能够以与旧版setuptools完全一致的方式安装包。
这听起来可能是个小问题,但如果我们改变了site-packages文件夹的目录结构,这将迫使我们的团队经历一个国际用户验收测试阶段,这会非常耗时。如果我们能保证新的安装工具生成与旧版完全相同的目录结构,那就太好了。
顺便提一下,我在Windows XP 32位的Python 2.4.4上使用的是最新的distribute。
1 个回答
如果你在Windows上使用Python 2.4,那么使用Distribute并没有什么好处,Setuptools就足够了。Distribute只有在Python 2.6(它支持新的“家”目录结构)和Python 3.x(Setuptools还没有移植到这个版本)时才有一些优势。
除此之外,Distribute相对于Setuptools并没有什么“升级”;实际上,Distribute里还有一些bug,这些bug在Setuptools中已经修复,或者根本就不存在于Setuptools中(因为它们是在Distribute中新增的)。
你还应该知道,创建Distribute的人现在主要在做Distutils2,并且并不打算对Distribute进行重大改进。
我知道这可能不是你想要的答案,因为看起来你已经决定要切换了。不过,如果你是因为流行的传言认为Setuptools没有维护或者有Distribute修复的bug(其实正好相反)而切换的,那你可能需要重新考虑一下。