在试用了一段时间的uv和pdm之后,上个月(2025.06)开始,逐步把用了几年的poetry替换成了pdm+uv(pipx install pdm uv && pdm config use_uv true)

## 为什么poetry -> pdm:

1. 通过ssh连接到服务器并使用poetry shell激活虚拟环境之后,如果没有主动退出,那么该进程有可能一直在跑着,即使你已经断开了服务连接,有时候这个进程甚至会占用100%的CPU

2. poetry需要额外安装poetry-plugin-version插件才能支持dynamic version,而pdm自身就支持

3. poetry需要加插件才能支持换国内的镜像源,而pdm直接用自带的config命令就行

4. poetry居然没有官方的github action构件,写ci时还得手动pip install poetry

5. poetry最大的痛点是lock贼慢,依赖比较多的项目,到最后懒得更新lock文件了,直接手动更新pyproject.toml并通过pip来安装和升级依赖

## 为什么时pdm+uv,而不是只用uv:

1. 在国外一般使用清华阿里等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,虽然各种槽点,但确实比pip+requirements.txt好一些。node前端的包管理工具,除了npm就是yarn和pnpm,而Python后端却是conda、pipenv、poetry、flit、hatch、uv、pdm、setuptools-scm、Rye让人眼花缭乱。其中uv作为后起之秀,在安装和解析包的速度这一块真的是一骑绝尘,而pdm在支持PEP新特性这一块相当给力。期待pdm+uv能够一统江湖,结束纷争乱象。

附:pdm项目开发环境自定义命令实例

[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"[dependency-groups]
dev = ["fast-dev-cli>=0.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的话,还可以用回pip:

pdm 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换阿里源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88976.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88976.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/88976.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Next开发,配置Navigation的Route

1. 通过router_map.json配置文件进行 创建页面配置router_map.json {"routerMap": [{"name": "StateExamplePage","pageSourceFile": "src/main/ets/pages/state/StateExamplePage.ets","buildFunction": "P…

在 GitHub 上创建私有仓库

一、在 GitHub 上创建私有仓库打开 GitHub官网 并登录。点击右上角的 “” → 选择 “New repository”。填写以下内容&#xff1a; Repository name&#xff1a;仓库名称&#xff0c;例如 my-private-repo。Description&#xff1a;可选&#xff0c;仓库描述。Visibility&…

量产技巧之RK3588 Android12默认移除导航栏状态栏​

本文介绍使用源码编译默认去掉导航栏/状态栏方法,以触觉智能EVB3588开发板演示&#xff0c;Android12系统&#xff0c;搭载了瑞芯微RK3588芯片&#xff0c;该开发板是核心板加底板设计&#xff0c;音视频接口、通信接口等各类接口一应俱全&#xff0c;可帮助企业提高产品开发效…

Conda 安装与配置详解及常见问题解决

《Conda 安装与配置详解及常见问题解决》 安装 Conda 有两种主流方式&#xff0c;分别是安装 Miniconda&#xff08;轻量级&#xff09;和 Anaconda&#xff08;包含常用数据科学包&#xff09;。下面为你详细介绍安装步骤和注意要点。 一、安装 Miniconda&#xff08;推荐&a…

Linux ——lastb定时备份清理

lastb 命令显示的是系统中 /var/log/btmp 文件中的SSH 登录失败记录。你可以像处理 wtmp 那样&#xff0c;对 btmp 文件进行备份与清理。✅ 一、备份 lastb 数据cp /var/log/btmp /var/log/btmp.backup.$(date %F)会保存为如 /var/log/btmp.backup.2025-07-14✅ 二、清空 lastb…

自定义类型 - 联合体与枚举(百度笔试题算法优化)

目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合练习二、枚举类型2.1 枚举类型的声明2.2 枚举类型的优点总结一、联合体 1.1 联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成…

FS820R08A6P2LB——英飞凌高性能IGBT模块,驱动高效能源未来!

产品概述FS820R08A6P2LB 是英飞凌&#xff08;Infineon&#xff09;推出的一款高性能、高可靠性IGBT功率模块&#xff0c;采用先进的EconoDUAL™ 3封装&#xff0c;专为大功率工业应用设计。该模块集成了IGBT&#xff08;绝缘栅双极型晶体管&#xff09;和二极管&#xff0c;适…

python学智能算法(十八)|SVM基础概念-向量点积

引言 前序学习进程中&#xff0c;已经对向量的基础定义有所了解&#xff0c;已经知晓了向量的值和方向向量的定义&#xff0c;学习链接如下&#xff1a; 向量的值和方向 在此基础上&#xff0c;本文进一步学习向量点积。 向量点积 向量点积运算规则&#xff0c;我们在中学阶…

【windows办公小助手】比文档编辑器更好用的Notepad++轻量编辑器

Notepad 中文版软件下载&#xff1a;这个路径总是显示有百度无法下载&#xff0c;不推荐 更新&#xff1a;推荐下载路径 https://github.com/notepad-plus-plus/notepad-plus-plus/releases 参考博主&#xff1a;Notepad的安装与使用

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学高年级组复赛真题+答案解析

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学高年级组复赛真题+答案解析 选择题 题目一 运行如图所示的程序,舞台上一共会出现多少只小猫呢?( ) A. 5 B. 6 C. 7 D. 8 正确答案: B 答案解析: 程序中“当绿旗被点击”后,角色先移到指定位置,然后“重…

对于独热编码余弦相似度结果为0和词向量解决了词之间相似性问题的理解

文章目录深入理解简单案例结论词向量&#xff08;Word Embedding&#xff09;简介词向量如何解决相似性问题&#xff1f;简单案例&#xff1a;基于上下文的词向量训练总结对于独热表示的向量&#xff0c;如果采用余弦相似度计算向量间的相似度&#xff0c;可以明显的发现任意两…

数据结构·数状数组(BIT)

树状数组(Binary Index Tree) 英文名&#xff1a;使用二进制下标的树结构 理解&#xff1a;这个树实际上用数组来存&#xff0c;二进制下标就是将正常的下标拆为二进制来看。 求x的最低位1的函数lowbit&#xff08;x&#xff09; 假设x的二进制表示为x ...10000&#xff0c;…

uniapp video视频全屏播放后退出,页面字体变大,样式混乱问题

uniapp官方的说法是因为页面使用rpx&#xff0c;但是全屏和退出全屏自动计算屏幕尺寸不支持rpx&#xff0c;建议使用px。但是因为uniapp端的开发都是使用rpx作为屏幕尺寸计算参数&#xff0c;不可能因为video全屏播放功能就整个全部修改&#xff0c;工作量大&#xff0c;耗时耗…

重复频率较高的广告为何一直在被使用?

在日常生活中&#xff0c;重复评率较高的洗脑广告我们时常能够碰到。广告的本质是信息传递&#xff0c;而重复频率较高的广告往往可以通过洗脑式的传播方式来提升传播效率。下面就让我们一同来了解下&#xff0c;为何这类广告一直受到企业的青睐。一、语义凝练高频率广告的内容…

内容管理系统指南:企业内容运营的核心引擎

内容管理看似简单&#xff0c;实际上随着内容量的激增&#xff0c;管理难度也逐步提升。尤其是在面对大量页面、图文、视频资料等数字内容时&#xff0c;没有专业工具的支持&#xff0c;效率与准确性都会受到挑战。此时&#xff0c;内容管理系统&#xff08;CMS&#xff09;应运…

文献查找任务及其方法

1. 必备网站&#xff1a; 谷歌学术 Web of Science Engineering Village CNKI翻译助手 科研通 2. 任务 学术上的一个调研&#xff0c;自动驾驶 3d 目标检测 方向的近7年的方法&#xff0c;模态&#xff08;相机/雷达/相机雷达 等&#xff09;&#xff0c;及其使用的数据集&a…

鸿蒙的NDK开发初级入门篇

初级必备的知识&#xff1a; NDK开发在什么时候用&#xff1f; 答&#xff1a;&#xff1a;NDK 开发在帮助应用提升性能的情况下使用&#xff0c;比如游戏开发&#xff0c;和硬件交互的场景中。 还有一个公司已经有标准的C或C库&#xff0c;不想在开发ArkTS的代码前提下。 开发…

Unity发布Windows平台后通过Advanced Installer制作安装包

Unity发布Windows平台后是一堆库资源&#xff0c;以及一个可执行的exe文件&#xff0c;并不是一个安装包&#xff0c;如果需要制作成安装包&#xff0c;需要再进一步打包&#xff0c;本篇文章介绍一个Advanced Installer的软件&#xff0c;专门用来制作Windows平台的安装包的。…

代数基本定理

代数基本定理 多项式 f(z)anznan−1zn−1⋯a1za0f(z) a_n z^n a_{n-1} z^{n-1} \cdots a_1 z a_0f(z)an​znan−1​zn−1⋯a1​za0​&#xff08;其中 n>1n > 1n>1 且 an,a0≠0a_n,a_0 \neq 0an​,a0​0&#xff09;在复数域内有根。 约定 以 ttt 为参数的闭曲…

springboot快速集成对接本地Ollama里的Deepseek-R1

书接上回&#xff0c;我们在本地安装了一个Ollama&#xff0c;然后下载了一个deepseek-r1:7b&#xff0c;传送门 本次目标&#xff1a;使用springboot对接ollama&#xff0c;完成简单api对接 1.创建一个项目&#xff0c;选择JDK17&#xff0c;Spring Boot版本3.5.3&#xff0c…