什么是top_level.txt文件?它是在何时被创建的?
top_level.txt相关问题解答 生成环节与负责工具
top_level.txt是setuptools工具的专属产物,不属于Python官方打包规范要求的必备文件:
- 生成时机:在包的打包环节,执行
setup.py sdist、setup.py bdist或者通过build前端调用setuptools构建包时触发 - 生成逻辑:setuptools会自动扫描项目根目录下所有顶级Python模块、包的名称,汇总后写入
top_level.txt,随打包产物一同发布,安装时会直接放置到对应包的.egg-info或.dist-info目录下
关于文件存在性的规律
你观察到的“大部分包都带这个文件”不是通用规律:
- 该文件只有用setuptools作为构建后端打包的包才会生成,现在主流的新一代构建后端包括poetry-core、flit-core、hatchling等,默认都不会生成
top_level.txt - 你之前没遇到缺失的情况,只是因为你常用的依赖刚好都采用setuptools作为构建后端,并不代表所有Python包都存在这个文件
注意:如果你的代码逻辑需要读取包的顶级模块信息,不要依赖非标准的
top_level.txt,建议采用官方标准方案:通过importlib.metadata模块的公开API查询,或者解析dist-info目录下的标准RECORD文件获取,兼容性更强。
内容的提问来源于stack exchange,提问作者wheresmycookie
相关产品推荐
相关产品推荐

