Python项目管理工具 PDM

简介: PDM(Python Development Master)是一款现代化的Python包管理工具,基于PEP 582标准,无需虚拟环境即可实现依赖隔离。它支持PEP 621声明项目元数据,告别`setup.py`,并具备快速安装、简洁依赖管理和内置脚本系统等优势。通过简单命令如`pdm init`、`pdm add`和`pdm run`,用户可轻松完成项目初始化、依赖管理和运行。适合希望简化依赖管理、追求现代工具体验的开发者,尤其对传统工具如`pipenv`或`poetry`不满意的用户。

Python 的世界里,从 pip 到 venv,从 requirements.txt 到 poetry、pipenv,项目依赖管理和环境隔离的选择五花八门。但今天要介绍的,是一款集轻量、现代、PEP 582 支持于一体的新锐工具——PDM

PDM 是什么?为什么它值得一试?

PDM,全称 Python Development Master,是一个现代化的 Python 包管理工具。它采用了 PEP 582 标准,可以不用虚拟环境,也能实现依赖隔离,和传统的 venvvirtualenv 说再见。

它的核心优势包括:

  • 使用标准的 PEP 621 声明项目元数据(告别 setup.py)
  • 完全支持 PEP 582,自动维护本地 .venv
  • 更快的安装速度和简洁的依赖管理
  • 内置脚本系统,自动化开发流程非常顺手

如何安装 PDM?

安装方式非常简单,推荐使用 pip 安装:

体验AI代码助手

代码解读

复制代码

pip install pdm

安装成功后可以用 pdm --version 检查是否生效。

创建和管理项目的基本流程

  1. 初始化项目:

bash

体验AI代码助手

代码解读

复制代码

pdm init

按照提示一步步选择cpython版本,输入项目名称、描述、作者、依赖等内容,PDM 会自动生成 pyproject.toml

  1. 安装依赖:

bash

体验AI代码助手

代码解读

复制代码

pdm add requests

pip install 命令不同,PDM 会把依赖和元数据写入 pyproject.toml,更规范。此时在 pyproject.toml文件的中会新增一条依赖,例如:

toml

体验AI代码助手

代码解读

复制代码

dependencies = ["requests>=2.32.3"]
  1. 运行项目:

bash

体验AI代码助手

代码解读

复制代码

pdm run

PDM 会自动从 .pdm-python 中读取依赖,无需激活虚拟环境!

  1. 管理开发依赖:

bash

体验AI代码助手

代码解读

复制代码

# 开发环境新增pytest依赖
pdm add --dev pytest
# 安装生产环境的依赖
pdm install --prod

开发依赖和生产依赖分开管理,干净利落。

支持脚本和插件,一键执行开发流程!

PDM 支持在 pyproject.toml 里定义脚本,比如:

ini

体验AI代码助手

代码解读

复制代码

[tool.pdm.scripts]
start = "python main.py"
test = "pytest tests/"

之后就可以直接运行:

arduino

体验AI代码助手

代码解读

复制代码

pdm run start
pdm run test

是不是有点像 npm 的 scripts?非常适合团队协作或 CI 自动化!

适用于哪些人?

  • 不想折腾虚拟环境的人
  • 想用更现代工具管理 Python 项目的开发者
  • poetrypipenv 不满意的人群
  • 渴望自动化脚本流的中高级用户

总结

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


转载来源:https://juejin.cn/post/7503596255122161690

相关文章
|
1月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
2月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
175 92
|
28天前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
153 3
|
2月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
500 1
|
1月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
198 0
|
2月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制
|
2月前
|
安全 API 数据安全/隐私保护
|
1月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
201 102
|
1月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
210 104
|
1月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
194 103

推荐镜像

更多
下一篇
oss教程