Python包和egg-info目录
有人可以解释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目录到站点 – 软件包目录? 我会自己尝试这个,但我不知道如何testing包是否可见setuptools。 奖金积分,如果你也可以告诉我如何testing这:)
我试图理解这一切的主要原因是因为我想将我的一些模块符号链接到站点包,以便我可以对其进行更改,并使用它们的脚本可以看到更改,而无需重新安装每次改变后从PyPI中取卵。
.egg-info目录只有在使用–single-version-external-managed来安装egg时才会被创build。 “通常情况下”,安装一个鸡蛋会创build一个包含代码和元数据的单个目录(或zip文件)。
pkg_resources(这是读取元数据的库)有一个函数require
,可以用来请求包的特定版本。 对于“老式”,正常的导入,easy_install将一个.pth文件导入到sys.path中。 对于单一版本的外部pipe理,这种黑客攻击是不必要的,因为只有一个版本(由系统的pacakging基础设施,例如rpm或dpkg)安装。 对于使用require
应用程序(或任何其他pkg_resources绑定机制),egg-info仍包含在内。
如果你想通过硬连接来安装一个包,我推荐使用“setup.py develop”。 这是来自setuptools的一个命令,它并不实际安装egg,但是使它在整个网站上都可用。 为此,它创build一个egg-link文件,以便pkg_resources可以find它,并处理.pth文件,以便常规导入可以find它。