编程学习网 > 编程语言 > Python > pip 已死?uv + pyproject.toml 正在重新定义 Python 打包!
2026
10-20

pip 已死?uv + pyproject.toml 正在重新定义 Python 打包!


"装 Python 包"这件事,过去是 pip install 一把梭,但痛点不少:装得慢、环境容易乱、setup.py 一堆历史包袱。这几年 Python 的打包/依赖管理经历了一轮大洗牌——从标准 pyproject.toml 的确立,到 uv 这种极速工具出现。梳理一下这条演进线,以及你现在该怎么选。

打包格式:从 setup.py 到 pyproject.toml

以前配置一个包要写 setup.py(Python 脚本)、setup.cfg、requirements.txt……分散又混乱。现在标准收敛到一个 `pyproject.toml`:包的元数据、构建配置、甚至工具配置(ruff、mypy 等)都能写进这一个文件。

[project]
name = "myapp"
version = "0.1.0"
requires-python = ">=3.9"
dependencies = ["requests>=2.0"]
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"

背后是 PEP 517/518/621 一系列提案,把"构建后端"和"元数据"标准化了。pyproject.toml 已经是新项目的默认选择——pip 新版本也会优先读它。构建后端也不再只有 setuptools,hatchling、flit 这些更轻的选择也能直接换上。

依赖安装:从 pip 到 uv

pip 安装慢、不锁版本容易翻车。出现了 uv(Rust 写的,和 ruff 同属 Astral)——官网号称比 pip 快 10-100 倍,而且集成了虚拟环境管理、依赖锁定等功能,大有取代 pip + venv + requirements 的架势。

uv init myapp            # 一键初始化一个项目,生成 pyproject.toml
cd myapp
uv add requests          # 装依赖,自动写进 pyproject 并更新锁文件
uv run python main.py    # 在项目的环境里跑脚本

uv init 建项目、uv add 加依赖、uv run 跑脚本,一套下来把"建环境、装依赖、跑起来"串成了三个命令,省去手动 venv + activate 的步骤。快 + 功能全,让 uv 这两年蹿得很快,成了"现代 Python 项目"的常用选择。

锁文件:依赖终于可复现

过去 requirements.txt 只写顶层依赖,版本不锁,换台机器就装出不同结果。现代做法用锁文件(lockfile)把每个依赖的精确版本都固定下来:

uv lock     # 生成 uv.lock,锁定所有依赖的精确版本

有了锁文件,团队每个人、每次部署装的依赖都一模一样,可复现性大大提升。这是工程化的重要一步。这条思路并不新鲜——pip-tools 的 pip-compile 早就这么干了,uv 只是把它内置了、还更快。

你现在怎么选

三个原则就够用:写新项目,直接 pyproject.toml + uv 一步到位;维护老项目,先给 requirements.txt 锁上精确版本,再逐步迁到 pyproject;不用焦虑,pip 不会立刻消失,生态还在过渡期,但从趋势看,pyproject + uv 是明确的方向。

几套主流工具,和容易踩的坑

到 2026 年,工具基本收敛成几套主流:老牌的 Poetry 功能全但有点重,PDM、hatch 也各有人用;uv 因为"快"和"把 pip/venv/锁文件一把抓",成了新项目里涨得最快的选择。老项目里的 pip + requirements.txt 也还能跑,官方 pip 同样在持续改进。

真正容易踩的坑反而不是"选哪个",而是这几点:加依赖要用 uv add,别手改 pyproject 后不更新锁文件;部署和 CI 里用 uv sync --frozen,保证只按锁文件装、不偷偷升级;锁文件出了问题,用 uv lock 重新生成,别手动去改。

为什么值得把这件事搞明白

打包看着琐碎,却是 Python 工程化的地基:"clone 下来就能跑""部署环境和本地一模一样",全靠这套机制。它不像语法和算法那么"酷",但你的项目越做越大、一起协作的人越多,越会发现它离不开。方向已经很清楚——pyproject.toml 统一配置、uv 极速安装、锁文件保证可复现。pip 不会一夜消失,但新项目已经没必要再走老路了。

以上就是“pip 已死?uv + pyproject.toml 正在重新定义 Python 打包!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。 

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取