导出当前Python项目依赖的方法
方法一:pipreqs(最推荐,静态分析代码)
通过扫描项目源码中的 import 语句,只导出实际用到的包,非常适合生成项目的 requirements.txt。
pip install pipreqs
然后
# 在项目根目录执行
pipreqs . --encoding=utf8 --force
生成的 requirements.txt 只包含代码中真正 import 的包,非常干净。
常用参数:
--force:覆盖已存在的 requirements.txt--encoding=utf8:避免中文路径/编码问题--ignore <dir>:忽略某些目录,如--ignore tests,docs--pypi-server:使用私有源时指定
方法二:pip-tools(更精确,适合有依赖锁需求)
需要你手动维护一个 requirements.in(只写顶层依赖),然后由工具解析出完整依赖树:
bash
pip install pip-tools # 在当前虚拟环境里,先安装项目依赖 pip install -e . # 生成锁定的 requirements.txt(含所有间接依赖及版本) pip-compile requirements.in
方法三:基于虚拟环境 + pip freeze(最准确但需隔离环境)
如果每个项目都用独立虚拟环境,那 pip freeze 就是”当前项目依赖”:
bash
# 创建干净环境 python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # 只安装当前项目的依赖(例如 pip install -e .) pip install -e . # 导出 pip freeze > requirements.txt
关键点:环境的隔离性决定了 pip freeze 的准确性。如果所有包都装在全局 Python 里,那它只会列出所有已安装的包。
方法四:从 pyproject.toml / setup.py 导出
如果你用现代打包方式,直接读取声明:
bash
# 使用 pip-tools pip-compile pyproject.toml -o requirements.txt # 或使用 pdm pdm export -o requirements.txt # 或使用 poetry(若项目用 poetry) poetry export -f requirements.txt --output requirements.txt
各方法对比
| 方法 | 是否只含项目依赖 | 是否含间接依赖 | 适用场景 |
|---|---|---|---|
pipreqs | ✅ 只含 import 到的 | ❌ | 快速生成、代码导入清晰 |
pip freeze(隔离环境) | ✅ | ✅ | 有独立 venv 的项目 |
pip-tools | ✅ 顶层 | ✅ 完整锁定 | 生产环境、可复现构建 |
poetry/pdm export | ✅ | ✅ | 已用这些包管理器的项目 |
建议
- 只是想快速生成一份 requirements.txt → 用
pipreqs - 要严格可复现、用于生产部署 → 用
pip-tools+ 独立虚拟环境 - 长期维护的项目 → 直接迁移到
pyproject.toml+poetry/pdm/uv,自带导出功能
2026年9月11日
