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

工作原理

  1. 扫描指定目录下的所有 .py 文件

  2. 分析所有 import 语句

  3. 匹配已安装的包及其版本

  4. 生成 requirements.txt 文件

注意事项

  1. 虚拟环境:建议在项目虚拟环境中使用,以确保依赖准确性

  2. 动态导入:无法检测通过 __import__() 或 importlib 动态导入的包

  3. 版本范围:默认会生成精确版本号,可使用 --no-pin 或 --mode 调整

  4. C扩展:某些C扩展包可能需要手动添加

与 pip freeze 对比

特性pipreqspip 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,可以保持项目依赖的整洁性和准确性,特别适合团队协作和项目部署场景。

posted @ 2025-06-28 09:54  郭慕荣  阅读(521)  评论(0)    收藏  举报