ManjusakaL
V2EX  ›  Python

UV 已死, PDM 天下第一,建议写 Python 的进来学习一下优雅的代码怎么写

By ManjusakaL at 2025 年 4 月 11 日 · 18569 次点击

实在忍不了 UV 了,继续来宣传 PDM 了,https://github.com/pdm-project/pdm

PDM 是我心中的白月光

  • 极为优雅的 API 设计
  • 极为清爽的 Plugin 开发体验
  • 不会试图当你的爹,教你做事

我建议每个写 Python 的人都可以来学习一下 PDM 的代码

105 条回复  •  2025-04-13 23:43:39 +08:00
第 1 页
共 2 页
12
F281M6Dh8DXpD1g2
   1
F281M6Dh8DXpD1g2  
   2025 年 4 月 11 日
井底之蛙呱呱呱
Kilerd
   2
Kilerd  
   2025 年 4 月 11 日 via iPhone
pdm 除了 add dep 的时候慢一点,其他使用体验上确实比 uv 好不少。 坐等一个 riir ,就完美了☺️
fds
   3
fds  
   2025 年 4 月 11 日
uv 除了不支持 python 2.7 ,其他我没找到什么毛病😄
w568w
   4
w568w  
   2025 年 4 月 11 日
> 实在忍不了 UV 了,继续来宣传 PDM 了

为什么?我认识的人里会用 pdm 管理项目的,现在基本全部转 uv 了。你逆行的理由是什么?
cj323
   5
cj323  
   2025 年 4 月 11 日
同问,所以 uv 哪里不舒服?
noahliaszn
   6
noahliaszn  
   2025 年 4 月 11 日
没看明白楼主想表达什么 一个包管理工具扯到写代码了.

另外 pdm 也支持 uv
https://pdm-project.org/en/latest/usage/uv/
ManjusakaL
   7
ManjusakaL  
OP
   2025 年 4 月 11 日 via iPhone
@w568w 正文里已经说了,pdm 兼容很多方式,比如我已经存在的 pyenv 的 workflow ,不会试图教我做事。以及 pdm 的 plugin 开发体验极好
wryyyyyyyyyyyy
   8
wryyyyyyyyyyyy  
   2025 年 4 月 11 日
pdm 能管理 python 的版本吗? 之前用 poetry ,然后 pdm ,再之后 uv ,不记得为什么不用 pdm 了。好像是 pdm 为了哪个 pep 哪个特性开发的,也是 pdm 引以为傲的特性,然后这个特性被 pep 否决了,pdm 想直接用也用不了。
ManjusakaL
   9
ManjusakaL  
OP
   2025 年 4 月 11 日 via iPhone
@wryyyyyyyyyyyy 支持管理 Python 版本
julyclyde
   10
julyclyde  
   2025 年 4 月 11 日   ❤️ 1
@fds 不支持 2.7 那是 feature 不是 bug
YaD2x
   11
YaD2x  
   2025 年 4 月 11 日
这标题有点逆天,看了都不想尝试。
jamstack
   12
jamstack  
   2025 年 4 月 11 日   ❤️ 1
"不会试图当你的爹,教你做事"
tf2
   13
tf2  
   2025 年 4 月 11 日
一快遮百丑

天下功夫唯快不破

pdm 就是没 uv 快。不服你提速啊。
w568w
   14
w568w  
   2025 年 4 月 11 日
@ManjusakaL #7 uv 并没有教你做事呀,你也可以使用自己的 python 解释器,或者 conda 的 python 解释器,或者 uv 帮你管理的。如果你使用 uv pip 模式,实际上它默认就不会下载解释器。读一下文档吧。

至于插件开发,我没遇到过这种需求。
tabris17
   15
tabris17  
   2025 年 4 月 11 日
你们吵吧,我选择 rye
w568w
   16
w568w  
   2025 年 4 月 11 日   ❤️ 1
我不用 pdm 的理由很简单:我的项目使用 pdm 需要 2 个小时才能 resolve (是的,2 个小时,我完全不知道 pdm 卡在哪里,它就一直转圈,没有任何有效的日志输出。每当我加一个 .whl 依赖——这在 AI 开发里很常见——它的 resolve 时间就增加 10 分钟)。

相同的代理、相同的依赖,猜猜 uv 需要多久? 13 秒。
ManjusakaL
   17
ManjusakaL  
OP
   2025 年 4 月 11 日
@w568w uv 对于 pyenv 或者其余类似的 workflow 兼容性极差

以及插件开发是非常常见的需求(
ManjusakaL
   18
ManjusakaL  
OP
   2025 年 4 月 11 日
@w568w 是时候把 resolve 的部分用 Rust 提速了
akin520
   19
akin520  
   2025 年 4 月 11 日
现在管理太多了,刚玩 MCP ,学会了 UV ,
Vegetable
   20
Vegetable  
   2025 年 4 月 11 日
pdm 已经出来太久了,使用 rye 或者 uv 的人,基本上都是从 pipenv 、poetry 一路过来的,相信大部分都试用过 pdm 。pdm 和 poetry 比也许有些优势,但是现阶段他的所有优势都比不上 uv 的快这一个优点。
uni
   21
uni  
   2025 年 4 月 11 日
踩踩踩

pdm 的 api 乱七八糟,uv 舒服多了
一个工具还要我写插件?我只需要用得舒心省心的工具,最好是一行命令帮我解决所有问题。这点 uv 做得很好。pdm 搞这么复杂乱七八糟的反而是他的设计失误
第三,我都不懂反驳了,楼下来吧
uni
   22
uni  
   2025 年 4 月 11 日
@tabris17 rye 好像已经被 uv 的团队接管了,之后不更新了,统一 uv
dule
   23
dule  
   2025 年 4 月 11 日
只用 uv ,谢谢
dule
   24
dule  
   2025 年 4 月 11 日
@dule 当然你用什么不管我的事,从现在起我对 PDM 观感更降低了,还好从来没用过这个
coolair
   25
coolair  
   2025 年 4 月 11 日
真是笑话,哈哈。
ll5270
   26
ll5270  
   2025 年 4 月 11 日   ❤️ 5
只有我用 virtualenv ? 你们说的这些我都没听过
deplives
   27
deplives  
   2025 年 4 月 11 日
花里胡哨,我不接受建议
tabris17
   28
tabris17  
   2025 年 4 月 11 日
@uni 太过分了,好不容易用趁手了,又要换。不过还好两者大差不差,我用 rye 后端跑的也是 uv
encro
   29
encro  
   2025 年 4 月 11 日   ❤️ 1
@uni

rye 是相当于 pdm ,uv 相当于 pip 。

rye 是基于 uv 。

我现在都是用 rye.

快,内存占用小,512M 的虚拟机也能用,你 pdm ,poetry 什么的就不行了。
xyzzy
   30
xyzzy  
   2025 年 4 月 11 日
看来楼主的这个安利似乎起到了反向效果,还是说,其实楼主本来就是反串来黑 pdm 的😂
akin520
   31
akin520  
   2025 年 4 月 11 日
@ll5270 我也用,基本是 3 带的那个 venv 好像就是基于 virtualenv 的,就是不能指定 PYTHON 版本
dantangfan
   32
dantangfan  
   2025 年 4 月 11 日
@ll5270 我也是😂
cz5424
   33
cz5424  
   2025 年 4 月 11 日
还在用 poetry 咋说
ManjusakaL
   34
ManjusakaL  
OP
   2025 年 4 月 11 日
@ll5270 我之前是 pyenv + virtualenv 的,后面切换到 PDM 了
ManjusakaL
   35
ManjusakaL  
OP
   2025 年 4 月 11 日
@uni 主要是有很多场景官方暂时也不太可能做,比如我自己写过的插件

1. audit ,更新上游的 security alert ,更新依赖
2. 生成依赖的关系图供审计用
3. 还有些场景特化的内部插件

> 一个工具还要我写插件?

凭心而论,写插件还是很常见的。。
cj323
   36
cj323  
   2025 年 4 月 11 日
python 的解释器/包管理和 venv 都太能折腾,能用就行了。

我目前是用 rust 系的 mise+uv ,半年下来还行。当然,我也不指望这套能撑多久。盲猜下一套是用 zig 写的。
jackerbauer
   37
jackerbauer  
   2025 年 4 月 11 日
python -m venv 和 pip 不好么?
xiangchen2011
   38
xiangchen2011  
   2025 年 4 月 11 日
uv 已死是什么逻辑,标题党成分
TArysiyehua
   39
TArysiyehua  
   2025 年 4 月 11 日
说的很好,但是我用 conda
yplam
   40
yplam  
   2025 年 4 月 11 日
@ll5270 +1 ,不过看了这个帖感觉 uv 貌似不错
iorilu
   41
iorilu  
   2025 年 4 月 11 日
你说的什么 api 设计, 这是给开发插件的人用的吗

我就管理虚拟环境, 目前用 uv -v , 速度快很好用
qq135449773
   42
qq135449773  
   2025 年 4 月 11 日   ❤️ 1
uv 说的是这个吗,我还以为 uvicorn ,第一次听说这个,谢谢分享

https://github.com/astral-sh/uv


看到 README 中写了“An extremely fast Python package and project manager, written in Rust.”

可是 python 生态下的包管理工具(比如 pdm )真的已经差到需要 rust 插手了吗。。。
iorilu
   43
iorilu  
   2025 年 4 月 11 日
@jackerbauer 换 uv 把, 不说别的, 时间省 80%
user1284
   44
user1284  
   2025 年 4 月 11 日
uv 用 rust 写的, 这一拳, 20 年的功力, 你挡得住吗
user1284
   45
user1284  
   2025 年 4 月 11 日
@cz5424 我原来也是用 poetry 的, 直到我遇到某些包装不了, 因为 poetry 觉得它不符合标准
user1284
   46
user1284  
   2025 年 4 月 11 日
@tabris17 #15 rye 都好久不更新了, 应该是寄了
zangaiboy
   47
zangaiboy  
   2025 年 4 月 11 日
市场回暖了吗,时隔多年又看到 xxx 第一这种争议性话题了
shijingshijing
   48
shijingshijing  
   2025 年 4 月 11 日
内网离线,我只用 conda
svtter
   49
svtter  
   2025 年 4 月 11 日
For me, 稳定项目用 pdm ,新的测试工程用 uv 。uv 速度真的很快。
ratazzi
   50
ratazzi  
PRO
   2025 年 4 月 11 日
@qq135449773 隔壁的 js 不是也用 zig 手搓嘛 https://bun.sh/
ZiChun
   51
ZiChun  
   2025 年 4 月 11 日
xx 已死这种标题大概率就只是为了吸睛,天生会让很多人好感降低。

uv 至少 sglang 、vllm 这些大模型推理框架都是推荐的。
Vegetable
   52
Vegetable  
   2025 年 4 月 11 日
@qq135449773 确实很烂,reslove 一次动辄几分钟真的和折磨人。
iorilu
   53
iorilu  
   2025 年 4 月 11 日
@yb2313 rye 停止更新了, 功能都转到 uv 上了, 现在 uv 已经是综合性项目管理的 ,不光是当作 pip 替代
pf94
   54
pf94  
   2025 年 4 月 11 日
只用 pip
Greendays
   55
Greendays  
   2025 年 4 月 11 日
啥啥啥,这都说的是个啥。
xiadengmaX1
   56
xiadengmaX1  
   2025 年 4 月 11 日
暴论引战,有那种 php 是世界第一语言那种感觉了
LuJason
   57
LuJason  
   2025 年 4 月 11 日
@akin520 #31 我直接 conda 一把梭
mywaiting
   58
mywaiting  
   2025 年 4 月 11 日
道理我都懂,但是我就是想用 pip 安装包,用 virtualenv 管理环境,pyenv 切换版本

尽管 uv 很快很简单,但是它不是 python 写的,出了问题需要 debug 源代码,我看不懂 rust

另外 uv 也扩展了部分实现,比如 uv workspaces

尽管我自己的项目也是按照 workspaces 类似的方式组织的,但没有 PEP 提案之前,还是慎用吧
EdmondGUO
   59
EdmondGUO  
   2025 年 4 月 11 日   ❤️ 1
第一次听说这些,可能我是搞机器学习学的 Python ,以前都是用 conda 的
guansixu
   60
guansixu  
   2025 年 4 月 11 日
我以为我们前端已经够乱了,npm 、yarn 、pnpm ,没想到 python 也是这么乱
llsquaer
   61
llsquaer  
   2025 年 4 月 11 日
安装过几个大的库就明白 uv 的好处了,速度杠杠的,只要之前安装过之后都是秒安装,省的网络问题安装不上了。

至少到现在没发现兼容性问题。 实在不想用使用 uv run xxx.py 命令启动。可以手动切入虚拟环境,使用 python xx.py
zepc007
   62
zepc007  
   2025 年 4 月 11 日
有点 Javaer 标题党的味道了, 哈哈哈🐸🐸🐸
zepc007
   63
zepc007  
   2025 年 4 月 11 日
@zepc007 UP 像一个哗众取宠的🤡
wuhunyu
   64
wuhunyu  
   2025 年 4 月 11 日   ❤️ 1
python 怎么这么多依赖管理工具,poetry ,pdm ,uv ,还有过时的 pip
leven87
   65
leven87  
   2025 年 4 月 11 日   ❤️ 1
一直用 pip , 感觉没什么问题
hefish
   66
hefish  
   2025 年 4 月 11 日   ❤️ 2
城里人玩的真花, 我只会 pip
bigtan
   67
bigtan  
   2025 年 4 月 11 日
最近全面转 uv 了,速度快,干净清晰
FlashEcho
   68
FlashEcho  
   2025 年 4 月 11 日
python 的包管理真的太多了,这么这么多有什么意义吗?原来的用着也还行啊

js 有 npm 这种超级屎山也只出了两种( yarn, pnpm)主流包管理
Lockroach
   69
Lockroach  
   2025 年 4 月 11 日
我还没装 uv 就开始唱衰 uv 了吗👀python 怎么也染上前端的坏毛病了
fcfangcc
   70
fcfangcc  
   2025 年 4 月 11 日
@mywaiting 我也用这 3 个,目前没感觉有啥问题。依赖包版本我都是手动写死版本的
xubeiyou
   71
xubeiyou  
   2025 年 4 月 11 日
@wuhunyu 确实 太多了- - 特么的 有时候很烦
godspeedyou
   72
godspeedyou  
   2025 年 4 月 11 日
优雅在工程面前啥都不是
xubeiyou
   73
xubeiyou  
   2025 年 4 月 11 日
Java 就 maven 和 grdle 就可以走天下 结果 py 也太多了
lc4t
   74
lc4t  
   2025 年 4 月 11 日
喜欢 uv
ddddd0
   75
ddddd0  
   2025 年 4 月 11 日 via iPhone
学习一下
vipfts
   76
vipfts  
   2025 年 4 月 11 日
vipfts
   77
vipfts  
   2025 年 4 月 11 日
@Lockroach 前端人员溢出到 python 了
jesusjiang
   78
jesusjiang  
   2025 年 4 月 11 日 via Android
uv yyds
StocksAI
   79
StocksAI  
   2025 年 4 月 11 日
都不用
ho121
   80
ho121  
   2025 年 4 月 11 日 via Android
只用 pip 和 venv 的路过。
遇到依赖冲突的手工解决。
切换 python 版本?不存在这个问题。用对应的 python 版本创建 venv 就够了。
xulolololololo
   81
xulolololololo  
   2025 年 4 月 11 日
9 年老 python ,没用过,喜欢原始自带的,能达到目的就行,就一个包管理的东西而已
nnnnnnamgn
   82
nnnnnnamgn  
   2025 年 4 月 11 日
之前因为 conda resolve 太慢换到 mamba ,现在又有新的了吗
zetary
   83
zetary  
   2025 年 4 月 11 日 via iPhone
@bluearc 可以试试 pixi ,也是用 rust 写的
skiy
   84
skiy  
   2025 年 4 月 11 日
rye 好用。
Trim21
   85
Trim21  
   2025 年 4 月 11 日 via Android
用 conda 的可以试试 pixi ,相当于 conda 生态的 uv (
hao7Chen
   86
hao7Chen  
   2025 年 4 月 11 日
我一个用 conda 的瑟瑟发抖
unclemcz
   87
unclemcz  
   2025 年 4 月 11 日 via Android
作为一个 pdm 用户,我觉得 op 会死的比 uv 早。
ManjusakaL
   88
ManjusakaL  
OP
   2025 年 4 月 11 日
@unclemcz 包的,要是 uv 连我这个病秧子都熬不过的话,那也是确实过于废材了
14
   89
14  
   2025 年 4 月 11 日
之前一直用 poetry ,后来有这个项目之后 https://github.com/mkniewallner/migrate-to-uv 就顺手迁移到了 uv ,速度快了很多
SkywalkerJi
   90
SkywalkerJi  
   2025 年 4 月 11 日
uv 感觉已经坐上 ai 的东风了
Nugine0
   91
Nugine0  
   2025 年 4 月 12 日 via Android
包管理器打来打去,架不住别人发论文还是用 requirements.txt ,真是互相恶心。
python 生态多年顽疾,短时间治不好的。
mayli
   92
mayli  
   2025 年 4 月 12 日   ❤️ 1
就你这样的用户
让我不想碰 pdm 了
啥被咬
lylijincheng
   93
lylijincheng  
   2025 年 4 月 12 日 via Android
真是够乱的有的一比
pip pipx pip3 uv pdm conda
nv npm pnpm yarn

没个最佳实践吗,都要玩一遍
bxb100
   94
bxb100  
   2025 年 4 月 12 日
@Kilerd 笑死
wheeler
   95
wheeler  
   2025 年 4 月 12 日   ❤️ 2
"不会试图当你的爹,教你做事"
absx
   96
absx  
   2025 年 4 月 12 日
我说一个吧
在中文文件夹下 uv init / pdm init 时,由于 pep 标准限制,无法使用中文作为 project name ,这两个指令会报错。
而 uv 提供了 uv init --name xxx 用给定的 name 绕过此限制,但是 pdm 没有提供解决办法。
weishu
   97
weishu  
   2025 年 4 月 12 日
mcp server 基本都用的 uv ,没见过 pdm 的。
vitality
   98
vitality  
   2025 年 4 月 12 日
我觉得 uv 是真的快、省心。
最重要的是,uv 还是 Rust 写的,性能有保障,更新维护也有保障。嘿嘿嘿嘿,我的 🦀,嘿嘿嘿🤤
hikarugo
   99
hikarugo  
   2025 年 4 月 12 日
感谢 op 发帖,让我知道了 uv ,之前一直在用 pyenv 和 virtualenv 。
jackyli1
   100
jackyli1  
   2025 年 4 月 12 日
好的,我会继续使用 uv
第 1 页
共 2 页
12
推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
© 2026 V2EX · 137ms · 3.9.8.5