我正在尝试python安装工具。
我是用pbr做的,我的代码是 https:/github.comHarishAtGitHubdoctreemasterPythonssetuptoolspbr。
我有
python setup.py develop
并发现我的包裹条目既在
1) easy-install.pth
2) *.鸡蛋链接
当easy-install.pth中的条目是需要的时候,在*.egg-link中拥有相同的位置引用的动机是什么?
即使我删除了 *.egg-link,软件包仍然可以导入,那么在 dist-packages 中的 egg-link 文件中加入链接有什么用呢?
我搜索了一下,发现 http:/www.ianbicking.orgdocssetuptools-presentation 第11张幻灯片,发现
开发安装一个包,而不需要将其移动到站点-包中。
Paste.egg-link是~copaste的穷人符号链接。
easy-install.pth 也指向 ~copaste Python 在 site-packages 中找到 .pth 文件,并将其内容添加到 sys.path 中。
但我还是不明白为什么我们需要在*.egg-link中录入,而不需要它就可以工作?
你是对的,那里有一些重复。 所有文件夹都在 easy-install.pth
来自 .egg-link
文件。
您可以考虑 easy-install.pth
以成为您可以在彩蛋链接中找到的文件夹的去重复列表。 这些文件夹被添加到 sys.path
. 这是一种缓存的形式--你可以避免每次都要扫描所有的蛋链接文件。
你也不能简单地铲除鸡蛋链接文件,因为它们代表了 包裹. 是这样的 pip
找出是否安装了某个包。 例如参见 https:/stackoverflow.coma425833631075152。.
假设你在可编辑模式下安装了两个软件包'a'和'b',并且它们都位于同一个文件夹中。
/path/to/my_packages/a/__init__.py
/path/to/my_packages/b/__init__.py
现在你有 一个 入选 easy-install.pth
(其中既 模块 可以从),但您有 两种 .egg-link
文件(每一个 包裹).
假设你有一个名为 mycompanystoolbox
. 它包含的代码提供了 toolbox
模块,不含 mycompanys
前缀 -- 所以你可以 import toolbox
.
现在你有一个文件 mycompanystoolbox.egg-link
代表软件包,并在 easy-install.pth
从中 toolbox
可以导入模块。