python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python依赖管理Pipfile与Pipfile.lock

Python依赖管理Pipfile与Pipfile.lock使用及说明

作者:nvd11

本文详细介绍了Python项目中Pipfile和Pipfile.lock的作用、原理,以及它们与传统requirements.txt的区别,Pipfile和Pipfile.lock是Pipenv的核心组件,用于解决依赖管理中的版本冲突、开发依赖分离困难、环境一致性差等问题

本文档详细介绍了 Python 项目中 PipfilePipfile.lock 的作用、原理,以及它们与传统 requirements.txt 的区别。

1. 它们是什么?

这两个文件是 Python 依赖管理工具 Pipenv 的核心组件。

如果你熟悉前端开发(Node.js),可以这样类比:

它们的设计目的是为了解决 Python 传统依赖管理(pip + requirements.txt)中的一些痛点,如版本冲突、开发依赖分离困难、环境一致性差等。

2. 文件详解

2.1 Pipfile (给人看的)

这是一个 TOML 格式的文件,用来声明项目需要哪些包。它只记录你直接安装的顶层依赖。

主要特点:

示例 Pipfile:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
requests = "*"          # 安装最新版
fastapi = ">=0.68.0"    # 指定最低版本

[dev-packages]
pytest = "*"
black = "*"

[requires]
python_version = "3.10"

2.2 Pipfile.lock (给机器看的)

这是一个自动生成的 JSON 文件,绝对不应该手动修改

主要特点:

3. 为什么很多人“写了很久 Python 也没用过”?

这在 Python 社区非常正常,主要原因有三点:

1.requirements.txt 的统治地位

2.生态分裂 (The “Packaging War”)

3.非官方标准

4. 对比:Pipenv vs requirements.txt

特性requirements.txtPipfile / Pipenv
依赖解析弱(容易出现版本冲突)强(自动计算版本兼容性)
版本锁定需要手动 pip freeze (不直观)自动 (Pipfile.lock 锁定所有子依赖)
开发依赖通常需要维护两个文件 (requirements.txt, dev.txt)内置支持 ([dev-packages])
虚拟环境管理手动 (python -m venv venv)自动 (自动创建和管理 hidden venv)
安装速度慢 (依赖解析算法复杂,Lock 过程较慢)
通用性极高中等 (需要安装 pipenv)

5. 什么时候该用哪个?

继续使用 requirements.txt

使用 Pipenv (Pipfile)

使用 Poetry / uv (pyproject.toml)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

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