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 · 2 天前 · 8700 次点击

    实在忍不了 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  
       2 天前
    井底之蛙呱呱呱
    Kilerd
        2
    Kilerd  
       2 天前 via iPhone
    pdm 除了 add dep 的时候慢一点,其他使用体验上确实比 uv 好不少。 坐等一个 riir ,就完美了☺️
    fds
        3
    fds  
       2 天前
    uv 除了不支持 python 2.7 ,其他我没找到什么毛病😄
    w568w
        4
    w568w  
       2 天前
    > 实在忍不了 UV 了,继续来宣传 PDM 了

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

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

    天下功夫唯快不破

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

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

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

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

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

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

    rye 是基于 uv 。

    我现在都是用 rye.

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

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

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

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

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

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

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

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

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

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

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

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

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