当前位置: 代码网 > it编程>前端脚本>Python > Python一行命令实现自动生成 requirements.txt

Python一行命令实现自动生成 requirements.txt

2026年03月04日 Python 我要评论
在 python 项目开发中,我们经常需要生成 requirements.txt 文件,用于:项目部署docker 构建服务器上线团队协作很多人直接使用:pip freeze > require

在 python 项目开发中,我们经常需要生成 requirements.txt 文件,用于:

  • 项目部署
  • docker 构建
  • 服务器上线
  • 团队协作

很多人直接使用:

pip freeze > requirements.txt

但这样会把当前环境的所有包都导出来,包括根本没用到的库,文件又大又乱。

今天给大家介绍一个更优雅、更智能的工具 —— pipreqs

一、什么是 pipreqs

pipreqs 是一个根据项目源码中 import 自动生成 requirements.txt 的工具。

它只会生成你真正用到的依赖,不会把整个虚拟环境都打包进去。

相比 pip freeze

工具特点
pip freeze导出全部环境依赖
pipreqs只导出项目实际使用依赖

二、安装 pipreqs

pip install pipreqs

说明:

  • 直接使用 pip 安装即可
  • 支持 python 3.x
  • 建议在虚拟环境中使用

三、一行命令生成 requirements.txt

进入你的项目目录,然后执行:

pipreqs . --force

参数说明:

参数作用
.当前目录
--force强制覆盖已存在的 requirements.txt

执行后,项目根目录就会自动生成:

requirements.txt

就这么简单!

四、pipreqs 工作原理

pipreqs 会:

  • 扫描当前目录所有 .py 文件
  • 解析 import 语句
  • 匹配对应 pypi 包名
  • 自动生成 requirements.txt

例如:

import requests
import numpy
import pandas

生成结果:

numpy==1.26.4
pandas==2.2.1
requests==2.31.0

只包含你真正用到的依赖

五、常用高级用法

1.指定生成路径

pipreqs ./your_project

2.忽略某些目录

pipreqs . --ignore tests

3.使用国内镜像(推荐)

如果你在国内,建议加上:

pipreqs . --pypi-server https://pypi.tuna.tsinghua.edu.cn/simple

这样解析更快。

六、pipreqs vs pip freeze 对比实战

假设你的虚拟环境里安装了 100 个包,但项目只用了 5 个。

使用 pip freeze:

100 个依赖

使用 pipreqs:

5 个依赖

优点:

  • 更干净
  • 更专业
  • 更适合开源项目
  • docker 镜像更小

七、注意事项

  • pipreqs 只能识别 import 语句
  • 动态导入可能识别不到
  • 有些包名和 import 名不一致(例如 pillow

遇到问题可以手动补充。

八、最佳实践建议

开发阶段:使用 pipreqs 生成干净依赖

部署阶段:再用 pip freeze 做最终锁版本

这样最稳。

九、总结

两行命令解决依赖管理问题:

pip install pipreqs
pipreqs . --force
  • 自动分析项目
  • 只生成真实依赖
  • 更专业的 requirements.txt
  • 部署更轻量

十、为什么 pipreqs 识别不到数据库依赖

很多同学会遇到一个问题:明明项目用了数据库,结果生成的 requirements.txt 里没有 psycopg2

例如项目里使用了 postgresql:

import psycopg2

但有时候生成的文件里却没有:

psycopg2

这是为什么呢?

原因分析

1.动态导入或框架间接依赖

如果你没有直接写:

import psycopg2

而是使用了:

  • django
  • sqlalchemy
  • flask + 插件

例如:

databases = {
    "engine": "django.db.backends.postgresql"
}

这类字符串配置方式,pipreqs识别不到的

因为它只分析 import 语句。

2.驱动是可选依赖

很多 orm 框架不会强制安装数据库驱动。

例如:

  • django 不会自动安装 psycopg2
  • sqlalchemy 也不会自动安装数据库驱动

驱动属于:可选运行时依赖

而不是源码级 import 依赖。

解决方案

方案一:手动补充(推荐)

直接在生成后手动添加:

psycopg2-binary==2.9.9

生产环境推荐:

psycopg2

开发环境推荐:

psycopg2-binary

方案二:显式 import(不太优雅)

你可以在某个文件里写:

import psycopg2

这样 pipreqs 就能识别到了。

但这种方式:

  • 不够优雅
  • 会污染代码结构

不太推荐。

方案三:使用 pipreqs + pip freeze 结合

最佳实践流程:

# 第一步:生成干净依赖
pipreqs . --force

# 第二步:确认数据库驱动
pip freeze | grep psycopg2

如果缺失,手动追加即可。

延伸说明:其他常见识别不到的库

除了 psycopg2,以下场景也常见:

场景举例
数据库驱动mysqlclient、psycopg2
wsgi 服务器gunicorn
asgi 服务器uvicorn
任务队列celery
生产工具redis

这些通常:

  • 运行时依赖
  • 部署依赖
  • 不一定在源码中 import

十一、深入理解依赖分类

其实依赖可以分为三类:

代码依赖(pipreqs 能识别)

import requests
import pandas

运行依赖(pipreqs 识别不到)

数据库驱动

wsgi 服务器

消息队列客户端

系统依赖(pip 管不了)

postgresql 服务

redis 服务

nginx

十二、最佳企业实践建议

在实际公司项目中,推荐做法:

开发阶段

pipreqs 生成干净 requirements.txt

测试 / 发布阶段

pip freeze > requirements-prod.txt

或者:

使用 poetry / pipenv 管理完整锁版本

这样:

  • 开发清爽
  • 部署稳定
  • ci/cd 更安全

十三、总结

pipreqs 非常适合:

  • 开源项目
  • 教学项目
  • 轻量项目
  • 想要干净依赖的人

但记住一句话:pipreqs 只认 import,不认运行环境。

数据库驱动、服务器组件这类依赖,一定要人工确认。

以上就是python一行命令实现自动生成 requirements.txt的详细内容,更多关于python生成requirements.txt文件的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com