资讯动态

Python后端项目之:我为什么使用pdm+uv

发布时间:2026/9/20 10:24:09 来源:尧图企业网站定制
## 2026-09 补充1. 创建虚拟环境用pdmpdm venv create --with uv --with-pip2. 安装和管理依赖用uvuv add httpx2 uv pip install orjson uv lock --upgrade3. 初始化环境也用pdm: pdm new xxx or mkdir my-project cd my-project pdm init4. 开发用脚本命令用just: uv tool install --python 3.14 rust-just(https://github.com/waketzheng/python-backend-justfile)5. 安装多版本的python也用uvuv python install --verbose 3.14-------------------------------------------------------------------------------------------------------------------在试用了一段时间的uv和pdm之后上个月(2025.06)开始逐步把用了几年的poetry替换成了pdmuvpipx install pdm uv pdm config use_uv true)## 为什么poetry - pdm:1. 通过ssh连接到服务器并使用poetry shell激活虚拟环境之后如果没有主动退出那么该进程有可能一直在跑着即使你已经断开了服务连接有时候这个进程甚至会占用100%的CPU2. poetry需要额外安装poetry-plugin-version插件才能支持dynamic version而pdm自身就支持3. poetry需要加插件才能支持换国内的镜像源而pdm直接用自带的config命令就行4. poetry居然没有官方的github action构件写ci时还得手动pip install poetry5. poetry最大的痛点是lock贼慢依赖比较多的项目到最后懒得更新lock文件了直接手动更新pyproject.toml并通过pip来安装和升级依赖## 为什么时pdmuv而不是只用uv1. 在国外一般使用清华阿里等pypi镜像源uv的lock文件里会携带源信息这就导致即使服务器环境和本地环境执行uv lock会产生不同的结果2. uv的优势是快但pdm在启动use_uv之后速度已经相差不大3. pdm在工程化支持这一块做的相对较好例如pdm new my-project可以直接创建新项目而uv目前(uv 0.7.20)并不支持再者pdm是python开发的写插件很方便如pdm self add pdm-plugin-i结论江山代有人才出长江后浪推前浪。用了好几年的poetry虽然各种槽点但确实比piprequirements.txt好一些。node前端的包管理工具除了npm就是yarn和pnpm而Python后端却是conda、pipenv、poetry、flit、hatch、uv、pdm、setuptools-scm、Rye让人眼花缭乱。其中uv作为后起之秀在安装和解析包的速度这一块真的是一骑绝尘而pdm在支持PEP新特性这一块相当给力。期待pdmuv能够一统江湖结束纷争乱象。附pdm项目开发环境自定义命令实例[build-system] requires [pdm-backend] build-backend pdm.backend [dependency-groups] dev [fast-dev-cli0.16.2,1] [tool.pdm.scripts] up pdm update -G :all type pdm run mypy . tree pdm list --tree deps pdm sync -G :all {args} prod pdm install --prod --frozen fresh {composite [up, deps]} test pdm run fast test style {composite [ruff format, ruff check --fix {args}]} check pdm run fast check {args} lint pdm run fast lint {args} bump pdm run fast bump patch --commit {args} tag pdm run fast tag {args} start {composite [pre-commit install, deps]} ci {composite [deps, check, test]}PDM Scripts - PDM不想要uv和pdm lock的话还可以用回pippdm run python -m ensurepip pdm run python -m pip install --upgrade pip pdm run python -m pip install --group dev -e . pdm add prod-dep --no-lock # 只安装包和更新pyproject.toml不更新pdm.lock另外pdm/uv换源可以这样pipx install pip-conf-mirror pip-conf --pdm qinghua # 给pdm换清华源 pip-conf --uv ali # 给uv换阿里源

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价