gpt4 book ai didi

Python 包和 egg-info 目录

转载 作者:IT老高 更新时间:2023-10-28 21:33:16 35 4
gpt4 key购买 nike

有人能解释一下 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 目录绑定(bind)到模块目录的?

假设我走在正确的轨道上,并且为了举例...如果我想让我的现有包对 setuptools 可见,我可以将模块目录和 egg-info 目录符号链接(symbolic link)到站点包目录?我自己会尝试这个,但我不确定如何测试该包是否对 setuptools 可见。如果你也可以告诉我如何测试这个,加分:)

我试图理解这一切的主要原因是因为我想将我的一些模块符号链接(symbolic link)到站点包中,以便我可以对它们进行更改并使使用它们的脚本可以看到更改而无需每次更改后从 PyPI 重新安装 egg。

最佳答案

.egg-info 目录只有在 --single-version-externally-managed 用于安装 egg 时才会创建。 “通常”,安装 egg 会创建一个目录(或 zip 文件),其中包含代码和元数据。

pkg_resources(读取元数据的库)有一个函数require,可以用来请求特定版本的包。对于“老式”的常规导入,easy_install 会破解一个 .pth 文件以将 egg 目录放到 sys.path 中。对于--single-version-externally-managed,这种hacking 是不必要的,因为只会安装一个版本(通过系统的打包基础设施,例如rpm 或dpkg)。对于使用 require(或任何其他 pkg_resources 绑定(bind)机制)的应用程序,仍然包含 egg-info。

如果你想通过硬链接(hard link)安装一个包,我推荐使用“setup.py develop”。这是来自 setuptools 的命令,它实际上并没有安装 egg,而是使它在站点范围内可用。为此,它创建了一个 egg-link 文件,以便 pkg_resources 可以找到它,并操作一个 .pth 文件,以便常规导入可以找到它。

关于Python 包和 egg-info 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256417/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com