python生态的项目管理工具
背景
在前端项目中,任何一个包管理器都可以直接使用package.json中scripts自定义的脚本,这意味着无论是任何框架任何架构,作者写了dev脚本,那么你就可以使用npm run dev启动项目查看效果,然而python生态中,火得一塌糊涂的uv包管理工具却没有这个特性。
列表
pdm
我最早接触到支持脚本的是pdm

使用如下格式进行定义
[tool.pdm.scripts]
dev = "litestar run --reload --host 0.0.0.0 --port 8000"
如同bun或是pnpm,脚本命令具有捷径写法,在无歧义的情况下,可以省略run,直接像下面这样运行。
pdm dev
其实很让我感到不舒服的一点是,scripts这种通用的东西,他们还是定义了一个自己工具的前缀。而不像package.json中,任何包管理工具都是通用的。可见python工程化做得远远不如nodejs。
rye(归档)
rye是uv团队推出的一款项目管理工具,然而现在已经弃用,显然是想要all in uv。

然而在uv中,确实不支持自定义脚本,只支持python函数入口(entry points)。
https://github.com/astral-sh/uv/issues/5903
自定义脚本的issue提出近两年了,uv依然没有做出脚本管理的功能,反观隔壁bun,已经吃了nodejs一大片山河,在边缘计算领域大放异彩(国内自然是没人玩这个)。
hatch
相比与pdm显得更重,更啰嗦。
https://github.com/pypa/hatch
hatch dep add requests
pixi
https://github.com/prefix-dev/pixi
如果你习惯使用conda,那么这玩意适合你。
总结
选pdm准没错。
很难相信python生态连个小小的脚本管理都统一不了。

浙公网安备 33010602011771号