什么是 top_level.txt 以及它何时创建?

whe*_*kie 7 python site-packages

背景

Python Eggs 的内部结构(由 python.org 托管)中,我了解到有一个名为 的文件top_level.txt与 Python Eggs 一起安装,该文件说明安装了哪些顶级模块或包。

Packaging.python.org未列为top_level.txt要创建并添加到 的文件dist-info。但是,当我手动检查 内部的依赖关系时site-packages,我还没有遇到该文件存在的情况。

问题

简而言之,这个文件是在何时何地创建的?

我观察到,当我安装软件包(在.egg-info或中.dist-info)时,它似乎总是存在,但这是我可以预期的模式吗?

Ant*_*ile 2

setuptools该文件并不总是存在,而是在该egg-info阶段添加

https://github.com/pypa/setuptools/blob/0d4d5565b1d9557f0b434adc87a0415abd2a5cc9/setuptools/command/egg_info.py#L707-L714

def write_toplevel_names(cmd, basename, filename):
    pkgs = dict.fromkeys(
        [
            k.split('.', 1)[0]
            for k in cmd.distribution.iter_distribution_names()
        ]
    )
    cmd.write_file("top-level names", filename, '\n'.join(sorted(pkgs)) + '\n')
Run Code Online (Sandbox Code Playgroud)

这是一个不包含轮子的示例:https://pypi.org/project/distlib/0.3.4/

(来自pypi的实际wheel文件)

https://files.pythonhosted.org/packages/ac/a3/8ee4f54d5f12e16eeeda6b7df3dfdbda24e6cc572c86ff959a4ce110391b/distlib-0.3.4-py2.py3-none-any.whl