You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Python import对应pip包名 生成单脚本requirements.txt

demo

导入名对应pip安装包名查询方法

Python 3.9+ 标准库自带importlib.metadata模块,直接读取包安装时写入的官方元数据,不存在匹配错误,是最准确的查询方式。

  • 交互环境查询示例(以BeautifulSoup为例,导入名是bs4):
from importlib.metadata import packages_distributions
# 先导入你要查询的模块
import bs4
# 输出对应的pip安装包名
print(packages_distributions()["bs4"])

执行后输出['beautifulsoup4'],就是实际需要pip install的包名。

  • 命令行一键查询,不用进交互环境:
python -c "from importlib.metadata import packages_distributions; import bs4; print(packages_distributions()['bs4'][0])"

如果使用Python 3.8及更早版本,先执行pip install importlib-metadata安装官方回溯包,查询用法完全一致。
如果是还没安装的包,直接查对应PyPI包的文档说明即可,日常写脚本的场景下本地已经安装可运行的包,用上面的方法完全够用。

单脚本全依赖(含隐式依赖)生成方案

不需要全局环境依赖清单、只针对单个py文件的场景,下面两个方案都可以满足需求:

  • 轻量静态分析方案:用pipreqs
    这个工具就是专门为单脚本/单目录项目设计的,不会扫描全局环境的所有安装包,只会匹配目标脚本实际用到的依赖,内置了绝大多数导入名和pip包名的映射规则,不会出现把bs4识别错成同名包的问题。
    安装和使用命令:
    pip install pipreqs
    # 替换成你的脚本路径,--force 覆盖已存在的requirements文件
    pipreqs ./your_script.py --force --encoding=utf-8
    
    执行完成后同目录会生成对应requirements.txt。如果旧版本pipreqs不支持直接传单文件路径,把目标脚本单独放到一个空目录,执行pipreqs 空目录路径即可。对于lxml这类代码里不显式import、但是被其他库调用的隐式依赖,这类依赖占比极低,要么工具内置的规则会自动识别,要么手动补一行即可,不需要额外复杂操作。
  • 高准确率方案:复用PyInstaller的依赖分析逻辑
    PyInstaller在打包阶段会做全量依赖扫描,包括静态分析导入链、识别隐式调用的依赖,不需要真的打包成exe就能拿到分析结果:
    pip install pyinstaller
    # 执行全量分析,不生成最终exe包
    pyinstaller --noconfirm --debug all --noarchive your_script.py
    
    执行完成后,在build/your_script/目录下的xref-your_script.html文件里,会列出脚本运行需要的所有依赖,包含显式导入、隐式调用的全部库,和最终打包exe时携带的依赖完全一致,不会漏装lxml这类隐式依赖。

注意:不要直接用pip freeze > requirements.txt,这个命令会导出当前环境下安装的所有包,不管你的脚本有没有用到,会产生大量冗余依赖,不符合单脚本生成依赖清单的需求。

内容的提问来源于stack exchange,提问作者MobCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:30:53