常识小站
第二套高阶模板 · 更大气的阅读体验

pyproject.toml如何替代Pipenv:现代Python项目的依赖管理

发布时间:2025-12-22 02:20:52 阅读:124 次

你有没有遇到过这样的情况?刚接手一个ref="/tag/136/" style="color:#2B406D;font-weight:bold;">Python项目,看到根目录下有个Pipfile,心里一紧——又得装Pipenv。可自己电脑上明明用的是pip和requirements.txt,这下还得额外装个工具,配置环境,麻烦得很。

从Pipenv到pyproject.toml:工具在进化

Pipenv曾经挺火的,它把pip和virtualenv打包在一起,号称“Python官方推荐的依赖管理工具”。可实际用起来,问题不少。有时候安装慢,有时候虚拟环境路径出错,跨平台还容易翻车。更别提团队协作时,有人用Pipenv,有人习惯poetry或者直接pip,文件格式不统一,协作效率大打折扣。

这时候,pyproject.toml就显得顺眼多了。它是PEP 518引入的标准配置文件,初衷是统一Python项目构建系统的配置方式。现在越来越多工具都支持它,比如poetry、flit、setuptools,甚至pip自己也能读它。

一个文件搞定依赖和配置

以前用Pipenv,你要维护Pipfile和Pipfile.lock两个文件。现在用pyproject.toml,所有信息都能塞进去。比如你写个小工具,需要requests和click:

[build-system]
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "my-cli-tool"
version = "0.1.0"
dependencies = [
"requests>=2.25.0",
"click>=8.0"
]

就这么几行,项目名、版本、依赖全有了。不需要额外工具生成lock文件,pip install . 的时候自动处理依赖,干净利落。

现实场景中的切换

老王是个运维,平时写点脚本处理日志。之前团队用Pipenv,每次新同事入职,他都得花半小时帮人解决virtualenv创建失败的问题。后来改用pyproject.toml,直接写好依赖,新人clone代码,运行pip install . 就跑起来了,连虚拟环境都可以用venv手动建,自由又稳定。

而且现在很多CI/CD流程也更倾向原生支持pyproject.toml。GitHub Actions里一行pip install .就能拉起环境,不用再pip install pipenv,省时间也少出错。

不是完全否定Pipenv

Pipenv有它的优点,比如自动激活虚拟环境,对新手友好。但如果你已经熟悉Python开发,追求简洁和标准化,pyproject.toml确实是个更轻便、更现代的选择。它不像某个特定工具的私有格式,而是整个生态都在往这个方向靠。

就像家里做饭,以前各家有各家的调料瓶,现在统一用标准调料架,谁来都能快速上手。pyproject.toml就是那个标准架。