似乎只需在PYTHONPATH中添加一个包路径,即可访问其所有模块和功能,类似于安装鸡蛋。区别于鸡蛋是拉链压缩的吗?
答案 0 :(得分:4)
Python Eggs是一个包裹分发系统,只需复制文件并更改$PYTHONPATH
即可a lot more。
编辑: A lot more
含义,例如runtime dependency resolution和plugin support。请参阅http://en.wikipedia.org/wiki/EasyInstall。
答案 1 :(得分:1)
是的,当你引用它们时,zip文件会被动态解压缩,使它们比你安装时慢。
答案 2 :(得分:1)
是的,但绝对多一点 阅读此http://www.ibm.com/developerworks/library/l-cppeak3.html转到部分“所有关于鸡蛋” 从以上网站复制:
然而,这种对PYTHONPATH(或脚本或Python shell会话中的sys.path)的操作有点脆弱。在一些新的魔法.pth文件中最好处理鸡蛋的发现。解析在site-packages /或PYTHONPATH中找到的任何.pth文件以执行其他导入,其方式与检查可能包含包的那些位置中的目录的方式非常相似。如果使用setuptools处理包管理,则在安装,升级,删除包等时会修改名为easy-install.pth的文件。但是您可以随意调用.pth文件(只要它们具有.pth扩展名) )。例如,这是我的easy-install.pth:
清单11. .pth文件作为egg位置的配置
% cat /sw/lib/python2.4/site-packages/easy-install.pth import sys; sys.__plen = len(sys.path) setuptools-0.6b1-py2.4.egg SQLObject-0.7.0-py2.4.egg FormEncode-0.5.1-py2.4.egg Gnosis_Utils-1.2.1-py2.4.egg import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
格式有点特殊:它几乎是,但不完全是Python脚本。我只想说你可以在那里添加额外的鸡蛋;或者更好的是,easy_install会在运行时为您完成。您也可以在site-packages /下创建任意数量的其他.pth文件,每个文件都可以列出要提供的鸡蛋。
答案 3 :(得分:0)
@lamirap:不一定。
首先,从磁盘读取需要一些时间,特别是如果模块有多个文件。因此,如果我们比较从磁盘读取多个文件而不解压缩并读取一个文件 - 这个较小,但随后进一步解压缩开销,后者不一定慢。
其次,理论使用egg有助于缩短sys.path,请参阅http://mail.python.org/pipermail/python-dev/2006-April/064544.html。
所以关于表现的底线是 - “这取决于”。