【问题标题】:What is the motive behind the redundant entry in both easy-install.pth and *.egg-link?easy-install.pth 和 *.egg-link 中的冗余条目背后的动机是什么?
【发布时间】:2014-05-19 15:15:27
【问题描述】:

我正在尝试 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 安装包而不将其移动到 site-packages/

Paste.egg-link 是穷人到 ~/co/paste 的符号链接

easy-install.pth 也指向 ~/co/paste Python 在其中找到 .pth 文件 站点包并将其内容添加到 sys.path

但我仍然不明白为什么我们需要在没有它的情况下输入 *.egg-link ?

【问题讨论】:

    标签: python python-2.7 setuptools setup.py


    【解决方案1】:

    性能

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

    您可以将easy-install.pth 视为您可以在 egg 链接中找到的去重文件夹列表。这些文件夹被添加到sys.path。这是一种缓存形式——您不必每次都扫描所有的 egg-link 文件。

    包标识与模块位置

    您也不能简单地删除 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 中有一个 条目(两个模块 都可以从中导入),但您有两个 .egg-link 文件(每个一个)。

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

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

    您现在有一个文件mycompanystoolbox.egg-link 代表包,easy-install.pth 中有一个文件夹,可以从中导入toolbox 模块。

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2018-07-30
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2018-09-19
      • 2016-10-12
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多