site-packages 中的 `.dist-info` 目录
以 flagtree-0.6.0+ascend3.5.dist-info 为例子:
root@bm-ctyun-wq-zone1-d-910b4-64g-0-18:/usr/local/python3.11.15/lib/python3.11/site-packages/flagtree-0.6.0+ascend3.5.dist-info# ls
entry_points.txt INSTALLER licenses METADATA RECORD REQUESTED top_level.txt WHEEL
这是 Python wheel 包安装后自动生成的元信息目录,从 pip install xxx 安装 wheel 包时创建,放在 site-packages 下面,不是代码包本身,只存包的描述信息。
命名规则:
{包名}-{版本号}.dist-info
你这里:
- 包名:
flagtree - 版本:
0.6.0+ascend3.5(+后面是本地版本标签,代表适配昇腾3.5的定制版本)
里面各个文件作用
- METADATA ✅最重要
包的描述:作者、许可证、依赖列表、包简介、主页、Python版本要求等。pip show flagtree就是读取这个文件。 - RECORD
记录这个包安装到系统里所有文件路径+哈希,pip 用来校验文件完整性、卸载的时候删除文件。pip uninstall靠这个列表删文件。 - WHEEL
记录这个包是 wheel 格式打包的,包含构建平台、python标签等打包信息。 - entry_points.txt
入口点配置。定义命令行脚本、插件入口。比如安装完包后能直接在shell敲xxxcmd,就是在这里注册的。 - INSTALLER
记录这个包是用什么工具安装的,一般写pip。 - REQUESTED
标记这个包是不是用户主动安装的;间接依赖包一般没有这个文件。 - top_level.txt
列出这个包对外暴露的顶层导入名(import xxx的名字),方便工具扫描包。 - licenses/
存放软件许可证文件。
关键要点
.dist-info不包含业务代码,真正的代码在同级目录flagtree/(python源码目录);dist-info只是包的“档案袋”。- 每个pip安装的包,都会有一个对应的
.dist-info。 - 不要手动修改里面文件:改了会导致pip校验失败、卸载异常。
- 当你删除这个
.dist-info文件夹:- Python 仍然可以正常 import 这个包(代码文件还在)
- 但是
pip list/pip show识别不到这个包,pip uninstall也无法卸载它,pip认为这个包丢失了元数据。
补充区分
.dist-info:wheel包(现代pip默认).egg-info:老的 setuptools egg 格式,旧包才会见到
浙公网安备 33010602011771号