我正在尝试使用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文件 site-packages并将其内容添加到sys.path
但是我仍然无法理解为什么我们需要输入* .egg-link才能在没有它的情况下工作?
答案 0 :(得分: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
您现在在{{1}中有一个一个条目(两个模块都可以从其中导入),但是您有两个 {{1 }}文件(每个程序包一个)。
假设您有一个名为easy-install.pth
的软件包。它包含提供.egg-link
模块的代码,不带mycompanystoolbox
前缀-因此您可以toolbox
。
您现在有了一个表示软件包的文件mycompanys
,还有一个import toolbox
中的文件夹,可以从其中导入mycompanystoolbox.egg-link
模块。