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

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

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

假设我在正确的轨道上,并且为了示例...如果我想让我的现有包对setuptools可见,我可以将模块目录和egg-info目录符号链接到site-packages目录?我本来就试过这个,但我不确定如何测试包是否对setuptools可见。如果您还可以告诉我如何测试这个奖励积分:)

我试图理解这一切的主要原因是因为我想将我的一些模块符号链接到网站包中,这样我就可以对它们进行更改,并让使用它们的脚本可以看到更改而不需要每次更改后从PyPI重新安装鸡蛋。

有帮助吗?

解决方案

只有在使用--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文件,以便常规导入可以找到它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top