python pipreqs 命令详解
pipreqs 是一个用于生成 Python 项目依赖文件 requirements.txt 的实用工具,它会扫描项目中的 import 语句,只生成项目实际使用的依赖包列表(而不是像 pip freeze 那样列出所有已安装的包)。
安装 pipreqs
pip install pipreqs
基本用法
1. 为当前目录生成 requirements.txt
pipreqs .
2. 为指定目录生成 requirements.txt
pipreqs /path/to/your/project
3. 强制覆盖已存在的 requirements.txt
pipreqs --force /path/to/your/project
常用选项详解
| 选项 | 说明 |
|---|---|
--savepath <file> |
指定生成的 requirements.txt 文件路径 |
--mode <mode> |
扫描模式,可选 gt(大于等于) 或 compat(兼容模式) |
--encoding <encoding> |
指定文件编码(默认: utf8) |
--debug |
打印调试信息 |
--ignore <dirs> |
忽略指定目录(多个目录用逗号分隔) |
--no-pin |
不固定版本号(只生成包名) |
--use-local |
优先使用本地已安装的包版本 |
高级用法示例
1. 指定输出文件位置
pipreqs . --savepath=/tmp/myreqs.txt
2. 忽略某些目录
pipreqs . --ignore=tests,venv
3. 使用宽松版本模式
pipreqs . --mode=compat
4. 不固定版本号
pipreqs . --no-pin
5. 生成最小依赖版本
pipreqs . --mode=gt
工作原理
-
扫描指定目录下的所有
.py文件 -
分析所有
import语句 -
匹配已安装的包及其版本
-
生成
requirements.txt文件
注意事项
-
虚拟环境:建议在项目虚拟环境中使用,以确保依赖准确性
-
动态导入:无法检测通过
__import__()或importlib动态导入的包 -
版本范围:默认会生成精确版本号,可使用
--no-pin或--mode调整 -
C扩展:某些C扩展包可能需要手动添加
与 pip freeze 对比
| 特性 | pipreqs | pip freeze |
|---|---|---|
| 依赖来源 | 分析代码中的 import | 当前环境所有已安装包 |
| 输出内容 | 仅项目直接使用的包 | 所有包(包括间接依赖) |
| 版本控制 | 可灵活配置 | 固定精确版本 |
| 适用场景 | 新项目开发 | 环境复制/部署 |
实际应用示例
# 进入项目目录
cd /path/to/project
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# 安装项目依赖
pip install -r requirements.txt # 如果有现有依赖
# 开发过程中添加新包...
# 生成新的 requirements.txt
pipreqs . --encoding=utf8 --force
# 检查生成的文件
cat requirements.txt
通过合理使用 pipreqs,可以保持项目依赖的整洁性和准确性,特别适合团队协作和项目部署场景。
郭慕荣博客园

浙公网安备 33010602011771号