如何只导出python项目的依赖包和版本信息
1.使用 pip freeze
(适用于纯净的虚拟环境)
pip freeze > requirements.txt
注意:仅当虚拟环境仅安装项目依赖时推荐,否则会包含无关包。除非你的虚拟环境只有你的项目所需依赖包,没有多余的包,否则无需的包也会给你导出。
2.使用 pipreqs
(推荐 - 基于项目代码分析)
安装pip install pipreqs
在项目根目录运行:
pipreqs . --encoding=utf8 --force
-
自动分析
import
语句生成依赖 -
--force
:覆盖现有requirements.txt
-
--encoding=utf8
:避免编码错误
3.使用 poetry
(适用于 Poetry 管理的项目)
# 导出为 requirements.txt 格式 poetry export -f requirements.txt --output requirements.txt --without-hashes
各方法对比
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
pip freeze | 纯净的虚拟环境 | 简单快速 | 可能包含无关依赖 |
pipreqs | 任何项目(推荐) | 仅导出实际使用的依赖 | 可能遗漏动态导入的包 |
poetry | 使用 Poetry 管理的项目 | 精确导出声明的主依赖 | 需项目使用 Poetry 构建 |
常见问题解决
-
遗漏依赖:检查是否包含间接依赖,可尝试:pip install pip-chill pip-chill > requirements.txt # 只导出主依赖(不含子依赖
-
动态导入包未识别:手动将缺失的包添加到
requirements.txt
建议:优先使用
pipreqs
,它能通过代码分析准确捕获项目直接引用的包。