Python包和egg-info目录

Jer*_*ell 75 python egg setuptools

有人可以解释egg-info目录如何与各自的模块绑定?例如,我有以下内容:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/
Run Code Online (Sandbox Code Playgroud)

我假设egg-info目录是使相应的模块对setuptools(easy_install)可见,对吧?如果是这样,setuptools如何将egg-info目录绑定到模块目录?

假设我在正确的轨道上,例如着想......如果我想让矿setuptools的可见现有的包,我可能只是符号链接模块目录和卵子信息目录的位点包目录?我本来只是尝试这样做我自己,但我不知道如何测试,如果包是setuptools的可见.如果你还可以告诉我如何测试这个奖励积分:)

我想了解这一切的主要原因是因为我想符号链接我的一些模块到站点包,这样我可以对其进行更改,并有改变使用它们,而无需重新安装脚本可见每次更换后,来自PyPI的鸡蛋.

Mar*_*wis 69

只有在使用--single-version-external-managed安装egg时才会创建.egg-info目录."通常",安装一个鸡蛋会创建一个目录(或zip文件),同时包含代码和元数据.

pkg_resources(读取元数据的库)具有require可用于请求特定版本包的功能.对于"旧式",常规导入,easy_install会攻击.pth文件以将egg目录放到sys.path上.对于--single-version-external-managed,这种黑客攻击不是必需的,因为只安装了一个版本(由系统的pacakging基础设施,例如rpm或dpkg).对于使用require(或任何其他pkg_resources绑定机制)的应用程序,仍然包含egg-info .

如果您想通过硬链接安装软件包,我建议使用"setup.py develop".这是来自setuptools的命令,它实际上并不安装鸡蛋,但可以在整个站点上使用它.为此,它创建一个egg-link文件,以便pkg_resources可以找到它,并且它操作.pth文件,以便常规导入可以找到它.

  • 要扭转`setup.py develop`的影响,请使用`setup.py develop -u` (24认同)