Python依赖管理神器requirements.txt从安装到实战完全指南

 更新时间:2026年05月26日 09:28:29   作者:小宁爱Python  
requirements.txt是 Python 项目中用于统一管理库包版本的纯文本文件,它记录了项目依赖的所有库包及其精确版本(或版本范围),这篇文章主要介绍了Python依赖管理神器requirements.txt从安装到实战的相关资料,需要的朋友可以参考下

前言

在 Python 开发中,你是否遇到过这样的窘境:本地跑通的项目,部署到服务器就报错?同事传的代码,在你电脑上却因 “缺少模块” 无法运行?这些问题的根源,大多是依赖环境不一致。而requirements.txt,就是 Python 生态中解决依赖管理的 “标准配置”。今天这篇文章,从基础概念到实战操作,带你彻底掌握它的使用。

一、先搞懂:什么是 requirements.txt?

requirements.txt是一个纯文本文件,用于记录 Python 项目所依赖的所有第三方包及其精确版本号。它的核心作用是:

  • 统一环境:确保开发、测试、生产环境使用完全相同的依赖版本,避免 “本地能跑,线上崩了” 的问题。
  • 简化协作:新人接手项目时,无需手动逐个安装依赖,一条命令即可搞定所有依赖。
  • 方便部署:在服务器或容器中部署项目时,快速还原依赖环境。

简单来说,它就像项目的 “依赖清单”—— 有了这份清单,无论在哪个环境,都能快速复刻出项目需要的 “运行土壤”。

二、准备工作:确保 pip 已安装(核心工具)

requirements.txt的使用完全依赖 Python 的包管理工具pip(Python Package Installer),所以第一步要确保pip已正确安装并升级到最新版。

1. 检查 pip 是否安装

打开终端(Windows 用 “命令提示符” 或 PowerShell,macOS/Linux 用 “终端”),输入以下命令:

pip --version  # 或 pip3 --version(区分Python2和Python3)

如果输出类似pip 24.0 from /usr/local/lib/python3.11/site-packages/pip (python 3.11),说明pip已安装;若提示 “命令不存在”,则需要先安装pip

2. 安装 / 升级 pip

pip通常随 Python 3.4 + 版本默认安装,若未安装或版本过旧,按以下步骤操作:

  • Windows/macOS/Linux 通用升级命令
    # 升级pip到最新版
    python -m pip install --upgrade pip
    # 若系统同时有Python2和Python3,用python3指定Python3
    python3 -m pip install --upgrade pip

三、核心操作:生成 requirements.txt

根据项目状态,生成requirements.txt有两种常见场景:新项目手动创建已有项目自动生成

场景 1:新项目(从零开始)

如果项目刚起步,依赖较少,可直接手动创建requirements.txt文件:

  • 在项目根目录下,新建一个名为requirements.txt的文本文件(无后缀,纯文本)。
  • 按 “包名==版本号” 的格式,逐行写入依赖。例如:
    # 注释:项目基础依赖
    flask==2.3.3          # Web框架,指定2.3.3版本
    requests>=2.31.0      # HTTP请求库,最低2.31.0版本
    pandas~=2.1.0         # 数据分析库,兼容2.1.x系列版本

版本号写法说明(关键!)

版本号的指定决定了依赖的兼容性,常见写法有 3 种:

  • ==x.y.z精确版本(推荐),强制安装指定版本,避免版本兼容问题。
  • >=x.y.z最低版本,安装不低于该版本的最新版,适合对版本不敏感的依赖。
  • ~=x.y.z兼容版本,允许升级到同系列的小版本(如~=2.1.0可安装 2.1.1、2.1.9,但不支持 2.2.0)。

场景 2:已有项目(自动生成,主要使用场景)

如果项目已开发一段时间,手动记录依赖太麻烦,可借助pip freeze命令自动生成requirements.txt,但有个重要前提:先激活项目的虚拟环境(否则会把全局所有 Python 包都列出来,导致文件冗余)。

步骤 1:创建并激活虚拟环境(关键!)

虚拟环境能隔离不同项目的依赖,避免全局包污染。以 Python 自带的venv为例:

# 1. 在项目根目录创建虚拟环境(venv是环境目录名,可自定义)
python -m venv venv  # 或 python3 -m venv venv

# 2. 激活虚拟环境
# Windows(命令提示符):
venv\Scripts\activate
# Windows(PowerShell):
.\venv\Scripts\Activate.ps1
# macOS/Linux:
source venv/bin/activate

激活成功后,终端前缀会出现(venv),表示当前处于虚拟环境中。

步骤 2:安装项目依赖(若未安装)

在虚拟环境中,安装项目所需的所有依赖(比如pip install flask requests),确保项目能正常运行。

步骤 3:自动生成 requirements.txt

执行以下命令,将当前虚拟环境中的所有依赖(及其版本)写入requirements.txt

pip freeze > requirements.txt

此时打开项目根目录,会发现已生成requirements.txt,内容类似:

进阶:用 pipreqs 生成更精简的依赖(推荐)

pip freeze会列出虚拟环境中的所有依赖(包括项目间接依赖的包,比如安装flask时自动安装的werkzeug),导致requirements.txt冗余。而pipreqs工具能只识别项目代码中实际导入的包,生成更精简的依赖清单。

使用 pipreqs 的步骤:

  • 安装 pipreqs:
    pip install pipreqs
    
  • 进入项目根目录,执行命令生成requirements.txt
    # --encoding=utf8 解决中文注释编码问题
    pipreqs . --encoding=utf8
    

例如,若项目代码中只导入了flaskrequestspipreqs生成的文件会只有这两个包,比pip freeze更简洁。

使用requests生成:

使用pipreqs生成:

四、核心操作:用 requirements.txt 安装依赖

当你拿到一个带有requirements.txt的项目(比如从 GitHub 下载),只需一条命令即可安装所有依赖。

步骤 1:激活虚拟环境(可选但推荐)

和生成时一样,先在项目根目录创建并激活虚拟环境(避免污染全局依赖)。

步骤 2:安装所有依赖

执行以下命令,pip会自动读取requirements.txt中的内容,安装所有指定包和版本:

pip install -r requirements.txt

常用扩展参数

  • 升级依赖:如果想将依赖升级到requirements.txt指定版本范围内的最新版(需配合>=~=写法):
    pip install --upgrade -r requirements.txt
    
  • 使用国内镜像源(提速):国内直接访问 PyPI 可能较慢,可指定清华、阿里等镜像源:
  • pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 不缓存安装包(节省空间):适合 CI/CD 或临时环境,避免缓存冗余包:
  • pip install -r requirements.txt --no-cache-dir

执行命令安转之后,原有的依赖报错就被解决了。

五、进阶技巧:管理多环境依赖

实际开发中,项目可能需要区分开发环境生产环境的依赖(比如开发时需要pytest做测试,生产环境不需要)。这时可以创建多个requirements文件。

示例:多环境依赖文件结构

plaintext

your_project/
├── requirements.txt       # 生产环境依赖(核心依赖,如flask、requests)
└── requirements-dev.txt   # 开发环境依赖(额外依赖,如pytest、flake8)

1. requirements.txt(生产环境)

flask==2.3.3
requests==2.31.0
pandas==2.1.0

2. requirements-dev.txt(开发环境)

# 先包含生产环境依赖
-r requirements.txt
# 再添加开发专属依赖
pytest==7.4.3          # 测试框架
flake8==6.1.0          # 代码规范检查
black==23.10.1         # 代码格式化工具

3. 安装对应环境的依赖

  • 生产环境安装:pip install -r requirements.txt
  • 开发环境安装:pip install -r requirements-dev.txt

六、常见问题与解决方案

问题 1:执行pip install -r时报 “版本冲突”

原因:不同依赖包对同一个子依赖的版本要求不一致(比如 A 包需要requests<2.30,B 包需要requests>=2.31)。解决方案

  • pipdeptree查看依赖树,定位冲突来源:pip install pipdeptree && pipdeptree
  • 手动调整冲突包的版本,找到一个双方都兼容的版本(比如将 A 包升级到支持requests>=2.31的版本)。

问题 2:pip freeze生成的依赖太多,包含无用包

原因:未激活虚拟环境,导致全局依赖被写入。解决方案

  • 删除现有requirements.txt
  • 按步骤创建并激活项目专属虚拟环境,重新安装依赖后用pip freeze生成。
  • 或直接用pipreqs生成精简版依赖。

问题 3:Windows 下激活虚拟环境提示 “权限不足”

原因:PowerShell 默认禁止执行脚本。解决方案

  • 以 “管理员身份” 打开 PowerShell。
  • 执行命令修改执行策略:Set-ExecutionPolicy RemoteSigned,输入Y确认。
  • 重新激活虚拟环境:.\venv\Scripts\Activate.ps1

七、总结

requirements.txt看似简单,却是 Python 项目规范化、可移植的关键。掌握它的核心流程:

  • 准备:确保pip最新,用虚拟环境隔离依赖。
  • 生成:新项目手动写,老项目用pip freezepipreqs自动生成。
  • 安装pip install -r requirements.txt一键还原环境。
  • 进阶:用多文件管理开发 / 生产环境依赖。

养成在 Python 项目中使用requirements.txt的习惯,能极大减少环境不一致带来的麻烦,让协作和部署更高效。

到此这篇关于Python依赖管理神器requirements.txt从安装到实战的文章就介绍到这了,更多相关Python依赖管理神器requirements.txt内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python单例模式的四种创建方式实例解析

    Python单例模式的四种创建方式实例解析

    这篇文章主要介绍了Python单例模式的四种创建方式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • keras.layers.Conv2D()函数参数用法及说明

    keras.layers.Conv2D()函数参数用法及说明

    这篇文章主要介绍了keras.layers.Conv2D()函数参数用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Numpy广播域的理解

    Numpy广播域的理解

    本文主要介绍了Numpy广播域的理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 关于python中模块和重载的问题

    关于python中模块和重载的问题

    这篇文章主要介绍了python模块和重载的问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • 详解Python操作RabbitMQ服务器消息队列的远程结果返回

    详解Python操作RabbitMQ服务器消息队列的远程结果返回

    RabbitMQ是一款基于MQ的服务器,Python可以通过Pika库来进行程序操控,这里我们将来详解Python操作RabbitMQ服务器消息队列的远程结果返回:
    2016-06-06
  • 关于Python错误重试方法总结

    关于Python错误重试方法总结

    在本篇文章里小编给网友们分享一篇关于关于Python错误重试方法总结内容,有需要的朋友们跟着学习参考下。
    2021-01-01
  • python查找第k小元素代码分享

    python查找第k小元素代码分享

    这篇文章分享了python查找第k小的元素程序代码,大家参考使用吧
    2013-12-12
  • 详解Python如何利用pymysql封装项目通用的连接和查询

    详解Python如何利用pymysql封装项目通用的连接和查询

    一个项目通常都需要有数据库,本文就来为大家详细讲讲Python如何利用pymysql简单分装一个通用的连接,关闭和查询,需要的可以参考一下
    2022-07-07
  • YOLOv5改进之添加SE注意力机制的详细过程

    YOLOv5改进之添加SE注意力机制的详细过程

    作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法,下面这篇文章主要给大家介绍了关于YOLOv5改进之添加SE注意力机制的相关资料,需要的朋友可以参考下
    2022-08-08
  • Python如何批量更改图像尺寸统一大小

    Python如何批量更改图像尺寸统一大小

    这篇文章主要介绍了Python如何批量更改图像尺寸统一大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论