easy-install.pth和*.egg-link中都有多余的条目,背后的动机是什么?

问题描述 投票:3回答:1

我正在尝试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中录入,而不需要它就可以工作?

python python-2.7 setuptools setup.py
1个回答
1
投票

绩效

你是对的,那里有一些重复。 所有文件夹都在 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 可以导入模块。

© www.soinside.com 2019 - 2024. All rights reserved.