文章目录

Python 依赖管理:requirements.txt 与 Pipfile

发布于 2026-04-04 05:20:14 · 浏览 4 次 · 评论 0 条

Python 依赖管理:requirements.txt 与 Pipfile

在 Python 项目中,准确记录和安装所需第三方库(即“依赖”)是保证代码在不同环境(如你的电脑、同事的电脑、服务器)上行为一致的关键。requirements.txtPipfile 是两种主流方案,它们目标相同,但实现方式和能力有显著差异。


一、快速上手:用 requirements.txt 管理依赖

requirements.txt 是最传统、最广泛支持的方式,本质是一个纯文本文件,每行列出一个包及其版本。

创建 requirements.txt 文件

  1. 进入你的项目根目录(即包含主代码的文件夹)。

  2. 运行命令生成当前环境的所有依赖列表:

    pip freeze > requirements.txt

    这会把当前 Python 环境中所有已安装的包及其精确版本号写入 requirements.txt

  3. 安装他人提供的 requirements.txt 中的依赖:

    pip install -r requirements.txt

手动编辑 requirements.txt
你可以直接用文本编辑器打开 requirements.txt,按需增删。常见写法:

  • requests==2.31.0:指定精确版本。
  • flask>=2.0,<3.0:指定版本范围。
  • numpy:不指定版本(不推荐,可能导致环境不一致)。

这种方式简单直接,几乎所有 Python 部署平台(如 Heroku、Docker)都原生支持。


二、进阶选择:用 Pipfile 与 Pipenv 管理依赖

Pipfile 是新一代依赖管理方案,由 pipenv 工具驱动,解决了 requirements.txt 的多个痛点:自动隔离虚拟环境、区分开发与生产依赖、使用更安全的 Pipfile.lock 锁定依赖树。

安装 Pipenv

安装 pipenv 工具(只需一次):

pip install pipenv

初始化项目

  1. 进入你的项目根目录。

  2. 运行以下命令初始化 Pipfile

    pipenv install

    如果目录下没有 Pipfile,此命令会自动创建一个,并生成一个专属的虚拟环境。

  3. 安装生产依赖(如 flask):

    pipenv install flask

    这会将 flask 写入 Pipfile[packages] 区块,并更新 Pipfile.lock

  4. 安装开发依赖(如测试工具 pytest):

    pipenv install pytest --dev

    这会将 pytest 写入 [dev-packages] 区块,仅用于开发,部署时不会安装。

使用依赖环境

  • 激活虚拟环境以运行代码:

    pipenv shell

    此后所有 pythonpip 命令都在隔离环境中执行。

  • 直接运行脚本而不进入 shell:

    pipenv run python app.py
  • 从现有 requirements.txt 导入依赖:

    pipenv install -r requirements.txt

三、核心区别:何时用哪个?

虽然两者都能管理依赖,但设计哲学和适用场景不同。关键差异如下:

特性 requirements.txt Pipfile (via Pipenv)
文件格式 纯文本,每行一个包 TOML 格式,结构化配置
虚拟环境 需手动创建 (python -m venv) 自动创建并管理
依赖分类 无法区分开发/生产依赖 明确分 [packages][dev-packages]
依赖锁定 无内置锁定机制(需额外生成) 自动生成 Pipfile.lock,锁定完整依赖树
可重复性 较弱(除非手动维护精确版本) 强(Pipfile.lock 确保每次安装完全一致)
学习成本 极低,几乎零门槛 略高,需理解新工具链
生态支持 全平台通用 部分旧系统或 CI/CD 流程需额外配置

选择建议

  • requirements.txt:如果你需要最大兼容性(如部署到老旧平台)、项目简单、或团队已习惯该流程。
  • Pipfile:如果你希望自动化虚拟环境、明确分离开发/生产依赖、追求更强的环境一致性,且能接受引入新工具。

四、迁移与共存策略

你不必非此即彼。很多项目同时提供两种文件以兼顾不同用户。

从 requirements.txt 迁移到 Pipfile

  1. 确保项目根目录有 requirements.txt
  2. 运行
    pipenv install -r requirements.txt
  3. 手动检查 Pipfile,将明显属于开发用途的包(如 pytest, black)移动到 [dev-packages] 区块。
  4. 删除 requirements.txt(可选),或保留供不使用 pipenv 的用户使用。

从 Pipfile 生成 requirements.txt
如果你需要为不支持 Pipfile 的平台提供依赖列表:

  1. 确保 Pipfile.lock 是最新的(运行过 pipenv install)。
  2. 运行命令导出生产依赖:
    pipenv requirements > requirements.txt

    或导出全部依赖(含开发依赖):

    pipenv requirements --dev > requirements.txt

无论采用哪种方式,始终将依赖文件纳入版本控制(如 Git),这是团队协作和持续集成的基础。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文