【问题标题】:How is a python egg different from a regular package?python egg 与常规包有何不同?
【发布时间】:2011-04-29 21:58:11
【问题描述】:

似乎只需将包路径添加到 PYTHONPATH 即可让您访问其所有模块和功能,类似于安装 egg。只是鸡蛋是zip压缩的区别吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    Python Eggs 是一个包分发系统,它执行a lot more 而不是简单地复制文件和更改$PYTHONPATH

    编辑: A lot more 表示例如runtime dependency resolutionplugin support。见http://en.wikipedia.org/wiki/EasyInstall

    【讨论】:

    • 从该链接中不清楚“更多”是什么(似乎 easy_install 并不只需要 egg 格式)。你能解释清楚吗?谢谢:)
    【解决方案2】:

    是的,但是更多 阅读此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 导入系统; 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 导入系统;新=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】:

    是的,当您引用 zip egg 文件时,它们会被即时解压缩,这使得它们比您安装时要慢。

    【讨论】:

    • 可以安装解压的鸡蛋,如果你也想的话。 easy-install --always-unzip.
    【解决方案4】:

    @lamirap:不一定。

    首先,从磁盘读取需要一些时间,尤其是在模块有多个文件的情况下。因此,如果我们比较从磁盘读取几个文件而不解压缩和读取一个文件 - 较小,但随后有一些进一步的解压缩开销,后者不一定更慢。

    其次,理论上使用鸡蛋有助于缩短 sys.path,请参阅 http://mail.python.org/pipermail/python-dev/2006-April/064544.html

    所以我关于性能的底线是——“这取决于”。

    *另见:Disadvantage of Python eggs?

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2010-10-10
      • 2010-09-20
      • 2012-04-14
      • 1970-01-01
      • 2015-08-27
      相关资源
      最近更新 更多