gpt4 book ai didi

python - easy-install.pth 和 *.egg-link 中冗余条目背后的动机是什么?

转载 作者:行者123 更新时间:2023-12-04 18:07:36 26 4
gpt4 key购买 nike

我正在尝试 python 设置工具。

我确实使用了 pbr 。我的代码是 https://github.com/HarishAtGitHub/doc/tree/master/Pythonsetuptools/pbr

我做了

python setup.py develop 

并在其中找到了我的包裹的入口

1)easy-install.pth

2) *.egg-link

当需要进入 easy-install.pth 时,在 *.egg-link 中具有相同位置引用背后的动机是什么。

即使我删除了 *.egg-link,包仍然是可导入的,那么在 dist-packages 中的 egg-link 文件中的链接有什么作用?

我搜索并找到了 http://www.ianbicking.org/docs/setuptools-presentation/第 11 张幻灯片,找到了

develop installs a package without moving it into site-packages/

Paste.egg-link is the poor man's symlink to ~/co/paste

easy-install.pth also points to ~/co/paste Python finds .pth files in site-packages and adds their contents to sys.path



但是我仍然不明白为什么我们需要在 *.egg-link 中输入,而它可以在没有它的情况下工作?

最佳答案

表现

你说得对,那里有一些重复。 easy-install.pth 中的所有文件夹来自 .egg-link文件。

你可以考虑easy-install.pth成为您可以在鸡蛋链接中找到的文件夹的重复数据删除列表。这些文件夹被添加到 sys.path .这是一种缓存形式——您不必每次都扫描所有的 egg-link 文件。

包标识与模 block 位置

您不能简单地删除 egg-link 文件,因为它们代表包。就是这样pip找出是否安装了给定的包。参见例如 https://stackoverflow.com/a/42583363/1075152 .

示例:包含多个包的单个文件夹

假设您在可编辑模式下安装了两个包“a”和“b”,它们都位于同一文件夹中。

/path/to/my_packages/a/__init__.py
/path/to/my_packages/b/__init__.py

您现在在 easy-install.pth 中有一个条目(两个模 block 都可以从中导入)但是你有两个 .egg-link文件(每个包一个)。

示例:名称与模 block 不同的包

假设您有一个名为 mycompanystoolbox 的包.它包含提供 toolbox 的代码。模 block ,没有 mycompanys前缀 -- 所以你可以 import toolbox .

您现在有一个文件 mycompanystoolbox.egg-link表示包,以及 easy-install.pth 中的文件夹来自 toolbox可以导入模 block 。

关于python - easy-install.pth 和 *.egg-link 中冗余条目背后的动机是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911396/

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