python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python生成requirements.txt文件

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

作者:林九生

一个清晰、准确的requirements.txt文件能够记录项目所依赖的所有第三方库及其版本,下面我们就来看看如何使用Python一行命令实现自动生成 requirements.txt吧

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

很多人直接使用:

pip freeze > requirements.txt

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

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

一、什么是 pipreqs

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

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

相比 pip freeze

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

二、安装 pipreqs

pip install pipreqs

说明:

三、一行命令生成 requirements.txt

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

pipreqs . --force

参数说明:

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

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

requirements.txt

就这么简单!

四、pipreqs 工作原理

pipreqs 会:

例如:

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 个依赖

优点:

七、注意事项

遇到问题可以手动补充。

八、最佳实践建议

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

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

这样最稳。

九、总结

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

pip install pipreqs
pipreqs . --force

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

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

例如项目里使用了 PostgreSQL:

import psycopg2

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

psycopg2

这是为什么呢?

原因分析

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

如果你没有直接写:

import psycopg2

而是使用了:

例如:

DATABASES = {
    "ENGINE": "django.db.backends.postgresql"
}

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

因为它只分析 import 语句。

2.驱动是可选依赖

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

例如:

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

而不是源码级 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

这些通常:

十一、深入理解依赖分类

其实依赖可以分为三类:

代码依赖(pipreqs 能识别)

import requests
import pandas

运行依赖(pipreqs 识别不到)

数据库驱动

WSGI 服务器

消息队列客户端

系统依赖(pip 管不了)

PostgreSQL 服务

Redis 服务

Nginx

十二、最佳企业实践建议

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

开发阶段

pipreqs 生成干净 requirements.txt

测试 / 发布阶段

pip freeze > requirements-prod.txt

或者:

使用 Poetry / Pipenv 管理完整锁版本

这样:

十三、总结

pipreqs 非常适合:

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

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

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

您可能感兴趣的文章:
阅读全文