有一个包管理器叫 PDM,已经四年多了

查看 51|回复 4
作者:frostming   
好久不上 v2 Python 结果毫无意外地又看到问 Python 包管理的贴子。
我不爱当卖瓜的王婆,但必须承认,PDM 到今天四年多了,还是很遗憾,没能进入大多数人的视野之中。
不说太多了,重新列一下 PDM 比较值得用的几个 feature
[ol]
  • 插件系统,可以很方便地增加自定义的命令或配置。
  • pnpm 式库链接缓存,节省磁盘空间
  • pdm scripts ,支持各种 pre_*, post_* 钩子
  • 支持安装 Python 版本
    [/ol]
    GitHub: https://github.com/pdm-project/pdm
    文档: https://pdm-project.org
    这几个可以说是超过 uv, poetry, rye 等时兴工具的地方。当然也有不如这几个的地方,比如性能。
    所以我也只是列出来,给大家参考,不管是用 conda 生态还是 pypa 生态,找到最适合自己用的那个,才是最好的。适合你的不一定适合别人,反过来也是。
    最后希望大家在问「该用什么 Python 包管理器」时,可以先搜索现存的贴子,毕竟这是个日经贴
  • NessajCN   
    支持,虽然我在上一个 Python 包管理帖子里推荐了 uv ,
    但我依然觉得 pdm 的设计也很不错(我几个包管理都试过,也都用在不同的项目里)
    只是我比较偏爱 rust 带来的高速和类 cargo 体验(纯个人偏好,不代表 uv 和 pdm 本身的优劣对比)
    另外说句私心的话,你要不用 Rust 把 pdm 重构一下(
    bianhui   
    PDM 用了几年,其实诟病也挺多的,没有想象那么好。一段时间经常遇到卸载一个包导致整个 python 环境奔溃,没研究为啥。
    后来用 rye 觉得挺舒服的,但是 bug 也很多,据说以后会废弃,迁移到 uv 上。
    现在在用 uv ,感觉还在前期不是很成熟,很多功能不支持。
    frostming
    OP
      
    @NessajCN
    @bianhui
    如果觉得 rust 写的那几个舒服,说明你看重的是它们有的那些优势,而它们缺乏的东西,比如说跨环境 lockfile 你们用不到。这很正常。
    所以还是那句话,看到推荐或不推荐的评论时,要想想适合不适合自己。这也是为什么我觉得问用哪个 Python 包管理器这种帖子没有任何意义。
    NessajCN   
    @frostming 确实,pdm 集成了环境管理,所以有相当多的功能是 uv 不具备的(不过它的后续 roadmap 有相关的集成计划)。
    而 Python 这种需要切环境并根据环境管理依赖和包的麻烦操作是 Python 作为解释型语言的先天不足,
    uv 选择专注包管理,把切环境的工作先交给其他工具(当然它本身有个 uv venv 生成个默认环境)
    你的 pdm 选择一把抓
    这里面两种选择都是可以理解的
    在上个帖子里帖主问的是「包管理工具」,所以我就仅从包管理的体验来说推荐了 uv
    如果提问的是「环境管理+包管理」,那我应该就会推荐你的 pdm 了
    当然还有一个考虑就是对于还需要提问包管理工具的新手,一般也不太会用到复杂的环境管理,有个系统默认的最新版解释器够用了。所以这种前提下我认为推荐 uv 也是合理的
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部