PDM的教程:新一代Python包管理工具,替代pip+venv的现代化方案

SEO关键词

Python包管理器、PDM教程、PDM安装、PDM使用教程、Python依赖管理、Poetry替代方案、PDM与Poetry对比、Python开发工具、pyproject.toml、PEP621


文章摘要

PDM是一款现代化Python包管理工具,支持PEP 621标准、Lock文件、共享缓存、uv加速以及PEP 582模式。本文详细介绍PDM的安装、依赖管理、项目创建、构建发布等核心功能,帮助开发者快速上手下一代Python开发工作流。在这里插入图片描述

大家好 这里是「代码简单说」,欢迎大家关注同名公众号,不定时更新更多实用有趣的教程 也欢迎大家在评论区一起讨论交流!~

在 Python 开发领域,包管理一直是一个绕不开的话题。从传统的 pip + virtualenv,到后来的 PipenvPoetry,开发者一直在寻找更加高效、规范的依赖管理方案。

今天给大家介绍一个近年来热度越来越高的 Python 包管理工具——PDM(Python Development Master)

它不仅支持最新的 Python PEP 标准,还拥有类似 Node.js 中 pnpm 的共享缓存机制,可以大幅减少磁盘占用,提高依赖安装效率。


什么是PDM?

PDM(Python Development Master)是一个现代化的 Python 包管理工具。

项目地址:

https://github.com/pdm-project/pdm

官方文档:

https://pdm-project.org/zh-cn/

PDM 致力于成为下一代 Python 包管理器,全面拥抱 Python 官方标准生态。

与传统工具相比,它具有:

  • 更快的依赖解析速度
  • 原生支持 pyproject.toml
  • 支持 Lock 文件
  • 支持插件扩展
  • 支持构建和发布 Python 包
  • 支持安装 Python 运行环境
  • 类似 pnpm 的共享缓存机制

对于现代 Python 项目来说,PDM 已经成为 Poetry 之外非常值得尝试的选择。


为什么选择PDM?

很多开发者可能会问:

pip已经够用了,为什么还需要PDM?

实际上传统方案存在不少问题:

pip + requirements.txt

缺点:

  • 无法精确锁定依赖树
  • 依赖冲突处理复杂
  • 环境管理能力弱
  • 不支持项目元数据管理

Pipenv

优点:

  • 集成虚拟环境
  • 自动生成锁文件

缺点:

  • 解析速度较慢
  • 不支持构建与发布

Poetry

优点:

  • 功能完整
  • 社区活跃

缺点:

  • 与构建后端绑定较深
  • 灵活性不足

PDM

PDM兼具:

✅ 环境管理

✅ 依赖管理

✅ Lock文件

✅ 包构建

✅ 包发布

✅ 插件系统

✅ 官方PEP标准支持

✅ 极速安装体验

因此越来越多的新项目开始采用 PDM。


PDM核心特性

1、基于PEP 621标准

PDM使用标准的:

pyproject.toml

作为项目配置文件。

例如:

[project]
name = "my-project"
version = "0.1.0"

dependencies = [
    "requests",
    "flask"
]

相比 requirements.txt 更规范、更现代。


2、支持Lock文件

安装依赖后:

pdm add requests

会自动生成:

pdm.lock

锁定完整依赖树。

团队协作时可以确保:

  • 开发环境一致
  • 测试环境一致
  • 生产环境一致

避免:

我电脑能运行
你电脑报错

的问题。


3、类似pnpm的共享缓存

这是PDM非常吸引人的一个功能。

传统方式:

项目A
 └── requests

项目B
 └── requests

项目C
 └── requests

每个项目都会安装一份依赖。

而PDM采用中心缓存:

Cache
 └── requests

项目A -> Link
项目B -> Link
项目C -> Link

优势:

  • 节省磁盘空间
  • 提升安装速度
  • 避免重复下载

对于拥有几十个项目的开发者来说非常实用。


4、强大的插件系统

PDM支持插件扩展。

开发者可以:

  • 自定义命令
  • 自定义工作流
  • 集成CI/CD
  • 扩展构建能力

生态项目:

Awesome PDM

收录了大量第三方插件。


5、支持安装Python解释器

PDM不仅管理包。

还能够安装Python版本。

底层使用:

python-build-standalone

项目。

实现类似:

Node.js + nvm

的开发体验。


安装PDM

PDM要求:

Python >= 3.10

Linux / macOS

执行:

curl -sSL https://pdm-project.org/install.sh | bash

Windows

PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://pdm-project.org/install.ps1 | iex"

验证安装

pdm --version

输出类似:

PDM, version 2.x.x

说明安装成功。


创建第一个PDM项目

执行:

pdm new my-project

系统会询问:

项目名称
作者
许可证
Python版本

完成后目录结构如下:

my-project
│
├── pyproject.toml
├── README.md
└── src

添加依赖

安装 requests:

pdm add requests

安装多个包:

pdm add requests flask sqlalchemy

安装完成后:

pyproject.toml
pdm.lock

都会自动更新。


查看依赖

查看当前依赖:

pdm list

查看依赖树:

pdm list --tree

输出示例:

requests
├── charset-normalizer
├── certifi
├── urllib3
└── idna

非常直观。


删除依赖

删除包:

pdm remove flask

执行后:

  • pyproject.toml更新
  • lock文件更新

无需手动修改。


更新依赖

更新全部依赖:

pdm update

更新指定包:

pdm update requests

运行项目

类似 npm run。

执行:

pdm run python main.py

或者:

pdm run pytest

无需手动激活虚拟环境。


发布Python包

构建项目:

pdm build

生成:

dist/
├── xxx.whl
└── xxx.tar.gz

上传到PyPI:

pdm publish

即可完成发布。


启用PEP 582模式

传统方式:

venv

PDM还支持:

PEP 582

模式。

开启:

pdm config python.use_venv False

安装依赖后:

__pypackages__

目录会出现在项目中。

效果类似:

Node.js
 └── node_modules

不再依赖虚拟环境。


启用uv加速

近年来最火的Python工具之一:

uv

由 Rust 编写。

安装速度远超 pip。

PDM 已支持 uv 集成。

开启:

pdm config use_uv true

之后安装依赖时会自动调用 uv。

速度提升非常明显。

注意:

uv

不能与:

PEP 582

同时使用。


常用命令汇总

命令说明
pdm new创建项目
pdm add添加依赖
pdm remove删除依赖
pdm update更新依赖
pdm install安装依赖
pdm list查看依赖
pdm run运行命令
pdm build构建项目
pdm publish发布项目
pdm config修改配置

PDM适合哪些开发者?

推荐使用PDM的人群:

Python库开发者

需要:

  • 构建wheel
  • 发布PyPI

PDM非常适合。


Web开发者

例如:

  • Django
  • Flask
  • FastAPI

项目管理体验优秀。


团队协作开发

借助:

pdm.lock

确保环境一致。


Poetry用户

如果觉得:

  • Poetry太重
  • 灵活性不足

可以尝试迁移到PDM。


总结

PDM是一个符合现代Python标准的包管理工具,它将依赖管理、环境管理、构建发布和插件扩展整合到了一起。

相比传统的:

pip + virtualenv

方案,它更加规范、自动化和高效。

其最大的亮点包括:

  • 支持PEP 621标准
  • Lock文件管理
  • 类似pnpm的共享缓存
  • 支持uv极速安装
  • 支持PEP 582
  • 强大的插件生态

如果你正在寻找 Poetry 之外的现代 Python 开发方案,那么 PDM 非常值得体验。


项目地址

GitHub:

https://github.com/pdm-project/pdm

官方文档:

https://pdm-project.org/zh-cn/


Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐