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

 更新时间:2026年03月04日 09:12:35   作者:林九生  
一个清晰、准确的requirements.txt文件能够记录项目所依赖的所有第三方库及其版本,下面我们就来看看如何使用Python一行命令实现自动生成 requirements.txt吧

在 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文件的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Python中的PyInputPlus模块

    详解Python中的PyInputPlus模块

    这篇文章主要介绍了Python中的PyInputPlus模块详解,PyInputPlus包含与input()类似的、用户多种数据(数字日期、E-mail地址等)的函数,PyInputPlus还包含其他有用的功能,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 使用Python实现在Excel工作表中添加、修改及删除超链接

    使用Python实现在Excel工作表中添加、修改及删除超链接

    在创建Excel工作簿时,内部文档的互链、报告自动化生成或是创建外部资源快速访问路径是比较常见的需求,本文将介绍如何使用Python实现在Excel工作表中对超链接进行添加、修改及删除的操作,需要的朋友可以参考下
    2024-10-10
  • python统计函数库scipy.stats的用法解析

    python统计函数库scipy.stats的用法解析

    今天小编就为大家分享一篇python统计函数库scipy.stats的用法解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python 读写文件的操作代码

    Python 读写文件的操作代码

    本文通过实例代码给大家介绍了Python 读写文件的操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • import sklearn报错正确安装sklearn的解决方法

    import sklearn报错正确安装sklearn的解决方法

    这篇文章主要介绍了import sklearn报错正确安装sklearn的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python中matplotlib调整图例位置的方法实例

    python中matplotlib调整图例位置的方法实例

    在matplotlib中,一般图例默认是在图表内部的,如果要放置到图例外面,需要对坐标进行指定,下面这篇文章主要给大家介绍了关于python中matplotlib调整图例位置的相关资料,需要的朋友可以参考下
    2022-06-06
  • Python实现将pdf文档保存成图片格式

    Python实现将pdf文档保存成图片格式

    有时候我们会碰到只支持图片上传的场景,如何编程快速将pdf转成图片呢?可以使用 Python 的 pdf2image 库仅10行代码就能将 PDF 文档保存为图片格式,所以本文给大家介绍了如何使用Python实现将pdf文档保存成图片格式,需要的朋友可以参考下
    2024-10-10
  • python自动更新pom文件的方法

    python自动更新pom文件的方法

    这篇文章主要介绍了python自动更新pom文件的方法,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Python异常处理与日志记录的操作过程

    Python异常处理与日志记录的操作过程

    Python提供了强大的异常处理机制和灵活的日志记录功能,使开发人员能够更轻松地管理代码中的错误和跟踪应用程序的执行过程,在本文中,我们将探讨使用Python进行异常处理与日志记录的最佳实践,以及一些案例代码来说明这些概念,需要的朋友可以参考下
    2024-04-04
  • 基于python的Paxos算法实现

    基于python的Paxos算法实现

    这篇文章主要介绍了基于python的Paxos算法实现,理解一个算法最快,最深刻的做法,我觉着可能是自己手动实现,虽然项目中不用自己实现,有已经封装好的算法库,供我们调用,我觉着还是有必要自己亲自实践一下,需要的朋友可以参考下
    2019-07-07

最新评论