V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
ManjusakaL
V2EX  ›  Python

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

  •  
  •   ManjusakaL · 15 天前 · 10239 次点击

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

    PDM 是我心中的白月光

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

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

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

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

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

    天下功夫唯快不破

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

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

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

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

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

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

    rye 是基于 uv 。

    我现在都是用 rye.

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

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

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

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

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

    我就管理虚拟环境, 目前用 uv -v , 速度快很好用
    qq135449773
        42
    qq135449773  
       14 天前   ❤️ 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  
       14 天前
    @jackerbauer 换 uv 把, 不说别的, 时间省 80%
    yb2313
        44
    yb2313  
       14 天前
    uv 用 rust 写的, 这一拳, 20 年的功力, 你挡得住吗
    yb2313
        45
    yb2313  
       14 天前
    @cz5424 我原来也是用 poetry 的, 直到我遇到某些包装不了, 因为 poetry 觉得它不符合标准
    yb2313
        46
    yb2313  
       14 天前
    @tabris17 #15 rye 都好久不更新了, 应该是寄了
    zangaiboy
        47
    zangaiboy  
       14 天前
    市场回暖了吗,时隔多年又看到 xxx 第一这种争议性话题了
    shijingshijing
        48
    shijingshijing  
       14 天前
    内网离线,我只用 conda
    svtter
        49
    svtter  
       14 天前
    For me, 稳定项目用 pdm ,新的测试工程用 uv 。uv 速度真的很快。
    ratazzi
        50
    ratazzi  
       14 天前
    @qq135449773 隔壁的 js 不是也用 zig 手搓嘛 https://bun.sh/
    ZiChun
        51
    ZiChun  
       14 天前
    xx 已死这种标题大概率就只是为了吸睛,天生会让很多人好感降低。

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

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

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

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

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

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

    没个最佳实践吗,都要玩一遍
    bxb100
        94
    bxb100  
       14 天前
    @Kilerd 笑死
    wheeler
        95
    wheeler  
       14 天前   ❤️ 2
    "不会试图当你的爹,教你做事"
    absx
        96
    absx  
       14 天前
    我说一个吧
    在中文文件夹下 uv init / pdm init 时,由于 pep 标准限制,无法使用中文作为 project name ,这两个指令会报错。
    而 uv 提供了 uv init --name xxx 用给定的 name 绕过此限制,但是 pdm 没有提供解决办法。
    weishu
        97
    weishu  
       14 天前
    mcp server 基本都用的 uv ,没见过 pdm 的。
    highf4324
        98
    highf4324  
       14 天前
    我觉得 uv 是真的快、省心。
    最重要的是,uv 还是 Rust 写的,性能有保障,更新维护也有保障。嘿嘿嘿嘿,我的 🦀,嘿嘿嘿🤤
    fyxtc
        99
    fyxtc  
       14 天前
    感谢 op 发帖,让我知道了 uv ,之前一直在用 pyenv 和 virtualenv 。
    jiaqili
        100
    jiaqili  
       13 天前
    好的,我会继续使用 uv
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2650 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:08 · PVG 14:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.