如何通过命令行获取pip中显式安装的软件包列表?
获取显式安装软件包的
pip freeze格式列表 可靠解决方案:pip inspect + 过滤工具组合
利用pip inspect返回的JSON数据中标记显式安装的requested字段,结合工具过滤并格式化输出,完全匹配PEP 376定义的“显式请求安装”包标准。
方法1:使用jq工具(推荐)
执行以下命令直接生成pip freeze格式的结果:
pip inspect | jq -r '.installed[] | select(.requested == true) | "\(.metadata.name)==\(.metadata.version)"'
命令拆解
pip inspect:输出包含所有已安装包元数据的JSON,其中requested: true对应显式安装的包jq -r:以原始字符串格式输出结果,避免多余引号.installed[]:遍历所有已安装包的条目select(.requested == true):筛选出标记为显式安装的包"\(.metadata.name)==\(.metadata.version)":将包名与版本拼接为pip freeze的标准格式
方法2:无jq时用Python处理
如果系统未安装jq,可通过Python内置JSON模块实现:
pip inspect | python3 -c " import json import sys data = json.load(sys.stdin) for pkg in data['installed']: if pkg.get('requested'): print(f\"{pkg['metadata']['name']}=={pkg['metadata']['version']}\") "
为什么不选pip list --not-required
正如你验证的结果,该命令会排除所有被其他包依赖的包——哪怕这些包最初是你显式安装的,无法精准匹配“显式请求安装”的定义,因此不适合你的需求。
内容的提问来源于stack exchange,提问作者Ash Skabo
相关产品推荐
相关产品推荐

