pdm,一个超强的 Python 包管理工具

划时代的 Python 包管理器 — PDM 局部&全局项目 阅读详情

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

你是否厌倦了使用 pip 和 virtualenv 来管理你的 Python 项目?你是否想要一个更现代、更方便的 Python 包和依赖管理工具?如果是的话,你可能会对 pdm 感兴趣。😊

pdm 是一个支持最新 PEP 标准的 Python 包和依赖管理工具。它不仅仅是一个包管理器,它还可以提升你的开发工作流程的各个方面。它的最大优势是它可以像 npm 那样安装和管理包,而不需要创建虚拟环境!

我个人体验下来的感觉,确实非常丝滑!👍

在这篇文章中,我将向你介绍 pdm 的主要优势、特点和用法,帮助你快速上手和使用 pdm 来管理你的 Python 项目。🙌

概要

这篇文章的主要结构如下:

  • 首先,我会介绍 pdm 主要优势和特点

  • 然后,我会介绍 pdm 的安装方法和基本配置。

  • 然后,我会展示如何使用 pdm 来创建、初始化和管理一个 Python 项目,包括添加、删除、更新等。

  • 最后,我会说明如何使用 pdm 来打包和发布你的 Python 项目,包括生成 wheel 文件,上传到 PyPI 等。

主要优势

通过使用 pdm,你可以享受以下几个好处:

  • pdm 使用 pyproject.toml 文件作为项目的唯一配置文件,它遵循 PEP 518 的标准,使得项目的元数据和依赖信息更加清晰和规范。

  • pdm 使用 PEP 582 的机制,自动管理项目的虚拟环境,无需手动激活或切换,也无需担心虚拟环境的路径和名称,只需在项目的文件夹中运行 pdm 命令即可。

  • pdm 使用 PEP 621 的格式,记录项目的元数据,使得项目更容易被打包和发布,也更容易被其他工具识别和使用。

  • pdm 使用一个高效的依赖解析算法,可以快速地找到项目的最佳依赖组合,避免版本冲突和不兼容的问题,同时,它也可以生成一个精确的锁文件,保证项目的依赖状态的一致性和可复现性。

  • pdm 提供了一些实用的功能和选项,比如支持多种 Python 版本的管理,支持多种源的切换,支持自定义的脚本和插件,支持导入和导出其他格式的配置文件,等等。

准备工作

在开始使用 pdm 之前,你需要满足以下条件:

  • 你的系统上已经安装了 Python 3.8 或更高版本。你可以使用 python --version 命令来检查你的 Python 版本。

  • 你的系统上已经安装了 curl 工具,用于下载 pdm 的安装脚本。你可以使用 curl --version 命令来检查你的 curl 版本。

当然,其实你也可以通过 pip 或 pipx 等其他包管理工具安装 pdm。

安装和配置 pdm

pdm 提供了一个安装脚本,可以将 pdm 安装到一个隔离的环境中,类似于 pip。你可以使用以下命令来运行安装脚本:

curl -sSL https://pdm-project.org/install-pdm.py | python3 -

安装完成后,你可以使用  pdm --version  命令来检查 pdm 的版本。你也可以使用  pdm --help  命令来查看 pdm 的帮助信息。

pdm 的默认安装位置取决于你的系统:

  • 对于 Unix 系统,是  $HOME/.local/bin  目录。

  • 对于 Windows 系统,是  %APPDATA%\Python\Scripts  目录。

你可以通过设置  PDM_HOME  环境变量来修改 pdm 的安装位置。你也可以通过设置  PDM_BIN_PATH  环境变量来修改 pdm 的可执行文件的位置。

pdm 的配置文件是  ~/.pdm/config.toml,你可以在这里修改 pdm 的一些全局选项,如缓存目录、源地址、代理设置等。你也可以在每个项目的  pyproject.toml  文件中添加  [tool.pdm]  部分来修改 pdm 的一些项目级别的选项,如 Python 版本、依赖分组等。

创建和管理 Python 项目

要使用 pdm 来创建一个 Python 项目,你可以使用  pdm init  命令,它会在当前目录下生成一个  pyproject.toml  文件,用于存储项目的元数据和依赖信息。

你可以按照提示输入一些基本信息,如项目名称、版本、许可证、作者等,也可以直接使用默认值。例如:

6ff640b837943fc7485f7b352271e9e6.png

这时,你的项目文件目录大概长这样:

ec99bb5bbba61b26c5d3e1bbf1521ad4.png

要添加一个依赖到你的项目中,你可以使用  pdm add  命令,它会自动更新  pyproject.toml  和  pdm.lock  文件,并安装依赖到你的项目中。

你可以指定依赖的名称、版本、来源等,也可以使用  -s  或  --section  选项来指定依赖的分组,如  dev、test  等。例如:

fdd7beb378f94607fba200f39667b0a4.png

要删除一个依赖,你可以使用  pdm remove  命令,它会自动更新  pyproject.toml  和  pdm.lock  文件,并卸载依赖。

你可以指定要删除的依赖的名称,也可以使用  -s  或  --section  选项来指定要删除的依赖的分组。例如:

c8643c7a8166368b19acbfc8781edb6c.png

要运行你的项目中的代码,你可以使用  pdm run  命令,它会在你的项目的环境中执行指定的命令。

你可以指定任何有效的命令,如  python、pytest、flake8  等。例如:

3a69083c6eb2ad3ec41270c1cfd46ca8.png

打包和发布 Python 项目

要打包你的 Python 项目,你可以使用 pdm build 命令,它会根据 pyproject.toml 文件中的元数据和依赖信息,生成一个 wheel 文件和一个 sdist 文件,放在 dist 目录下。

你可以使用 -d 或 --dest 选项来指定输出目录,也可以使用 -s 或 --sdist-only 选项来只生成 sdist 文件。例如:

$ pdm build
✔ Build sdist successful
✔ Build wheel successful
$ ls dist
test-pdm-0.0.0-py3-none-any.whl  test-pdm-0.0.0.tar.gz

要发布你的 Python 项目,你可以使用  pdm publish  命令,它会将你的项目上传到 PyPI 或其他指定的源。你需要先在  ~/.pypirc  文件中配置你的源信息,如用户名、密码、令牌等。

如果事先没有配置,pdm 会提示让你输入对应信息:

> pdm publish
Building sdist...
Built sdist at C:/Devel/pdm-demo/dist\pdm-demo-0.1.0.tar.gz
Building wheel...
Built wheel at C:/Devel/pdm-demo/dist\pdm_demo-0.1.0-py3-none-any.whl
Username:

总结

在本文中,我向你介绍了 pdm 的基本用法和优势,包括如何安装 pdm,如何使用 pdm 创建和管理 Python 项目,如何使用 pdm 安装、更新、卸载项目的依赖包。

希望你能从中学到一些有用的知识,也希望你能尝试使用 pdm 来管理你的 Python 项目,相信你会发现它是一个非常强大和方便的工具。

如果你对本文有任何的意见或建议,欢迎在评论区留言,或者直接联系我。如果你喜欢本文,也请不要吝啬你的点赞和分享,让更多的人知道 pdm 的魅力。


如果大家想进一步了解学习更多 Python 库,可以考虑关注下这个专栏哦。

2ce90f37feeee28b90f20046b98b9008.jpeg

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

👇关注我的公众号👇

告诉你更多细节干货

ee04ebd328d9d9d1bb079dcb8054f346.jpeg

欢迎围观我的朋友圈

👆每天更新所想所悟

PDM文件打开方式 项目里有后缀为 *.pdm 的文件,该文件为数据库表结构模型,也可以理解为数据字典。 方式一:在线打开 在这里分享一个很方便的网站,在线阅读pdm文件,打开这个网址放pdm文件进去,即可打开,十分方便快捷。 http://www.dmanywhere.cn/ 方拾二:powerdesigner客户端 PowerDesigner软件创建数据库快捷便利的可视化工具,毕竟在线版的资源有限 网上有很多不错的安装教程 学习powerdesigner入门教程点击 https://www.cnblogs.com/bie 阅读详情

相关推荐

Python包管理工具:PDM,现代Python包和依赖管理器

此外,PDM 还提供了良好的环境隔离机制,让开发者能够在不同的项目中使用不同的 Python 版本和依赖,保持项目的独立性。随着技术的不断发展,现代的Python包和依赖管理器PDM应运而生,支持最新的PEP标准,为Python开发者提供了更便捷、可靠的包管理体验。总体来说,PDM 在简洁易用、智能的依赖解决方案、版本锁定和环境隔离、以及模块化的设计上有着明显的优势,使得它成为了现代 Python 包管理工具中备受关注的一员。:使用PDM命令行工具添加需要的依赖,并可以指定依赖的版本要求。

wjianwei666的专栏 675

来了!新一代的 Python 包管理工具 -- PDM

PDM 是一个新的 Python 的包管理器,也许你还未知晓它的存在,但实际上PDM 已经诞生两年,并在 2021 年发布 1.0 版本,目前最高的版本是 1.12.8。

程序员小麦的博客 3429

王道考研计算机网络课件全解析:从零搭建你的知识框架(附B站视频+PPT下载)

本文全面解析王道考研计算机网络课程的核心知识体系,从OSI七层模型到TCP/IP四层架构,详细讲解物理层、数据链路层、网络层、传输层和应用层的关键技术。提供高效学习路径、实战案例和常见误区警示,帮助考生系统构建计算机网络知识框架,适合计算机考研备考者参考学习。

leaf8的博客 560

探索 PDM:新一代的 Python 包管理工具

在本文中,深入探讨了 PDM 作为新一代 Python 包管理工具的各项特性。从安装与初始化、依赖管理、锁定版本,到工作原理和与其他工具的比较,详细介绍了 PDM 的优势。PDM 通过灵活的依赖版本管理、PEP 582 的支持以及本地缓存等机制,为开发者提供了更为可靠、高效的包管理体验。相比于传统的 pip 和 Poetry,PDM 在依赖隔离、版本控制和性能优化等方面表现出色。通过示例代码和清晰的对比,读者可以更好地理解 PDM 的使用方法和其在实际项目中的优势。

z099164的博客 3676

技术解析:ChangeFormer——基于Transformer的孪生网络在遥感变化检测中的创新应用

本文深入解析了ChangeFormer模型在遥感变化检测中的创新应用,该模型基于Transformer架构和孪生网络(Siamese Network),显著提升了变化检测的精度和效率。通过详细的技术实现和实战经验分享,展示了其在建筑物变化、森林监测等场景中的卓越表现,为相关领域的研究和应用提供了有力工具。

weixin_29102619的博客 495

【AutoSar CP】SoAd模块

比如对于特定的PDU,其PduId在程序编译时就确定了,但是在代码运行中,该PduId可能需要发送到不同的远端ip,这时就需要用SoAd来设置连接远端地址信息。SoAdSocketConnectionGroup(连接参数)SoAdSocketRoute(接收数据)SoAdRoutingGroup(开关)SoAdPduRoute(发送数据)

至道无难,唯嫌拣择。 1685

Python 包管理工具性能大比拼:pdm、pipenv、poetry、pip-tools

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。本周有赠书福利,详见文末Python生态中有很多优秀的包管理工具,如pdm、poetry、pipenv等,可以帮助我们解决包管理的问题。它们有着不同的特点和优势,也有着不同的使用方式和学习曲线。有国外Python开发者好奇各自的...

codingpy的博客 3584

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 964

牛!Python开源作者,被诺奖得主邀请会面

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。来源:OSC开源社区今天网上冲浪看到了一名中国 Python 开发者分享的有趣经历,他称在自己34岁生日之际收到了一封邮件,内容是一位诺贝尔经济学得主邀请与其会面。起初这名开发者怀疑这是骗局,但经过核实邮件的真实性后,他决定接受...

codingpy的博客 121

YOLOv11的扩散模型去噪预处理-(在推理前对低质量图像进行增强)

摘要: 扩散模型与YOLOv11的结合有效提升了复杂场景下的目标检测性能。针对低质量图像(如噪声、低光照)导致YOLOv11特征提取退化的问题,研究提出了一种基于条件扩散模型的预处理方法。通过语义引导的渐进式去噪,在保留关键检测特征的同时,显著改善了图像质量。技术核心包括:1)利用YOLOv11浅层特征作为条件输入;2)交叉注意力机制实现任务感知去噪;3)知识蒸馏与潜空间扩散加速推理。实验表明,该方法使mAP50提升19%,在15步内达到传统百步去噪效果,平衡了精度与实时性需求,为鲁棒性目标检测提供了新思路

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 875

ccSwitch 安装使用指南,claude code的最佳搭档

ccSwitch 是一款真正为 AI 编程开发者打造的效率工具。它把原本繁琐的配置管理工作,简化成了直观的图形界面操作。无论你是需要在多个 API 提供商之间切换,还是想要统一管理多款 AI 编程工具,ccSwitch 都能帮你大幅提升效率。如果你是重度 AI 编程工具用户,强烈推荐尝试一下 ccSwitch,相信它会成为你开发工具箱中不可或缺的一员。项目地址。

篮球界最会写bug的人;程序猿中打球最菜的人。 1283

研发设计数字化:PLM、PDM、ERP介绍及其区别

PDM涉及从产品概念设计到样机试验阶段的产品数据信息的管理,PLM涵盖从产品规划、设计、制造、使用、报废乃至回收的全部过程,并向前延伸至客户需求管理 (CNM)和供应链管理 (SCM) 、向后延伸至客户关系管理 (CRM) ,从而形成包括产品全生命周期所有信息的管理。这对于避免法律问题和确保产品质量至关重要。PDM侧重于企业内部和产品数据的管理,PLM则强调对支持产品全生命周期的企业内部以及跨越企业的资源信息的管理及利用,所以PLM通常会与目前市面上通用的CRM、SCM、MES等各类专业管理软件集成。

Iris_xuexi的博客 2527

OpenCASCADE:Direct3D CSharp 示例

OpenCASCADE:Direct3D CSharp 示例OpenCASCADE:Direct3D CSharp 示例 OpenCASCADE:Direct3D CSharp 示例 此示例演示了如何在使用CSharp和Windows Presentation Foundation (WPF)编写的.Net应用程序中使用 OCCT 和 DirectX 库。 .Net、OCCT (C++) 和 DirectX 级别之间的连接由用 C++/CLI 编写的代理库OCCProxy和D3DProxy提供。代理库OCC

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1824

Python项目管理工具 PDM

PDM 是一个站在多个 PEP 标准之上的现代化工具,简洁、强大、好用。如果你还在为项目依赖混乱头疼,不妨试试 PDM,让你的开发体验从此升级!

ffella的博客 376

CAN总线入门(硬件部分)

这篇博客讲述CAN总线入门知识。

记得诚 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

新一代的 Python 包管理工具 -- PDM

PDM 是一个新的 Python 的包管理器,也许你还未知晓它的存在,但实际上PDM 已经诞生两年,并在 2021 年发布 1.0 版本,目前最高的版本是 1.12.8。在刚听到 PDM 时,我下意识认为它是 Python Development Manager,又一个和 Pipenv 和 Poetry 一样换汤不换药的虚拟环境管理工具。一直到我翻到了作者的博客,才知道 PDM 的全称是 Python Development Master,比我想像的还要牛逼一个档次。值得一提的是,PDM 的作者是 PyPa

王炳明 4520

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

PDM是什么?PDM有什么用?怎么选PDM?2025制造PDM/PLM系统盘点(4000字)

以5W1H框架梳理PDM的方方面面,附PDM/PLM盘点、PDM部署案例

「 CRDE智橙PLM」,让企业用得起,让团队用得起来。 4249

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PDM入门指南:一文带你了解PDM的基本知识

上一期,我们聊过PLM;这一期,我们接着聊聊PDM。在介绍之前,先回答之前客户提出的问题:上线PLM/PDM后,还需要e企拆图吗?可能需要,原因放在最后,有需要的朋友可直接跳到最后。我们先来聊聊什么是PDM?

DOCUVIX的博客 2778

Python包管理工具之PDM的使用教程(转载)

大家好,我是小姜。之前讲了一个pipenv和poetry包管理工具,想必大家也和我一样去了解过pipenv所存在问题,所以不是很推荐使用。后来改成了poetry工具,但这个东西对我来说稍微有点麻烦,经常容易打错,虽然可以做成alias的形式。那么今天我给大家推荐一个叫PDM的工具,全称:Python Development Master。它也是非常好用,有兴趣的朋友可以使用一下。

qq_43569397的博客 1988

PowerDesigner之PDM(物理概念模型)

PowerDesigner之PDM(物理概念模型) 一、PDM概述   PDM(物理数据模型),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库。   PDM中涉及到的基本概念包括: 表; 列; 视图; 主键; 候选键;...

ajwqb06628的专栏 2685

查看数据库设计(.pdm文件)

5.直接执行./dmanywhere.team.linux.0.8.4 -p 8080 其他系统把linux改一下就行,执行完毕即可通过浏览器访问。方法示例:nohup ./dmanywhere.team.linux.0.8.4 -p 8080 &轻量级、方便查看、可以部署私有化。但是有些地方可能无法解析。需要安装软件,可以修改文件内容,比较专业。二、下载安装PowerDesigner。首次访问,根据页面提示进行系统初始化。7.达成的效果(只能查看不能修改)

weixin_45000830的博客 1837

PDM系统六大功能介绍

​ PDM的中文名称为产品数据管理,是一门用来管理所有与产品相关信息(包括零件信息、配置、文档、CAD文件、结构、权限信息等)和所有与产品相关过程(包括过程定义和管理)的技术。通过实施PDM,可以提高生产效率,有利于对产品的全生命周期进行管理,加强对于文档,图纸,数据的高效利用,使工作流程规范化。

weixin_42211283的博客 4353

快速区分PDM和PLM,不再混淆

PDM,作为产品数据的守护者,专注于数据的组织、存储与协同利用。而PLM,则如同一位全能的指挥官,引领产品从创意萌芽到市场退役的每一步。二者虽同为产品管理的得力工具,却各自拥有独特的定位与价值。

大腾智能的博客 2028

【Pyenv教程】0. Pyenv与PDM的异同

Pyenv和PDM在功能和使用方式上有所差异。

aichaoxy的博客 619

PDM系统和PLM系统的区别是什么?

而PLM则强调了对产品生命周期内跨越供应链的所有信息进行管理和利用的概念,这是与PDM存在的本质区别。二者之间的概念也有所不同:PLM是产品生命周期管理,而PD M则是产品数据管理,PDM是一门用来管理所有与产品相关信息和所有与产品相关过程的技术。关注点:PLM系统更加注重产品的全局管理和协同,包括产品的设计、工程、制造和市场等多个方面的协作管理。功能范围:PLM系统涵盖了从产品的概念设计、工程设计、制造、销售、售后服务等整个生命周期的管理,而PDM系统主要用于管理产品的设计数据、工程文档和相关文件。

「 CRDE智橙PLM」,让企业用得起,让团队用得起来。 883
上一篇: 一不留神,大模型已经学会操纵手机了?!
下一篇: 骗子太多了,记得多问一句:有证据吗?
codingpy
博客等级 码龄11年 1867粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值