一个现代的 Python 包管理器,支持 PEP 最新标准。English version README

PDM 旨在成为下一代 Python 软件包管理工具。它最初是为个人兴趣而诞生的。如果你觉得 pipenv 或者
poetry 用着非常好,并不想引入一个新的包管理器,那么继续使用它们吧;但如果你发现有些东西这些
工具不支持,那么你很可能可以在 pdm 中找到。
Pipenv 是一个依赖管理器,它结合了 pip 和 venv,正如其名称所暗示的。它可以从一种自定义格式文件 Pipfile.lock 或 Pipfile 中安装软件包。
然而,Pipenv 并不处理任何与构建、打包和发布相关的工作。所以它只适用于开发不可安装的应用程序(例如 Django 网站)。
如果你是一个库的开发者,无论如何你都需要 setuptools。
Poetry 以类似于 Pipenv 的方式管理环境和依赖,它也可以从你的代码构建 .whl 文件,并且可以将轮子和源码发行版上传到 PyPI。
它有一个漂亮的用户界面,用户可以通过贡献插件来定制它。Poetry 使用 pyproject.toml 标准。
Hatch 也可以管理环境,并允许每个项目有多个环境。默认情况下,所有环境会放在一个中心位置,但也可以配置为将项目环境放在项目根目录中。它可以管理包,但不支持 lockfile。Hatch 也可以用来打包一个项目(用符合 PEP 621 标准的 pyproject.toml 文件)并上传到 PyPI。
PDM 也可以像 Pipenv 那样在项目或集中的位置管理 venvs。它从一个标准化的 pyproject.toml 文件中读取项目元数据,并支持 lockfile。用户可以在插件中添加更多的功能,并将其作为一个发行版上传,以供分享。
此外,与 Poetry 和 Hatch 不同,PDM 并没有和任何特定的构建后端绑定,你可以选择任何你喜欢的构建后端。
PDM 需要 Python 3.10 或更高版本。你也可以从 release assets 下载独立的可执行文件来使用。
优先使用预构建的独立二进制,直接运行安装脚本即可:
Linux/Mac 安装命令
curl -sSL https://pdm-project.org/install.sh | bash
Windows 安装命令
powershell -ExecutionPolicy ByPass -c "irm https://pdm-project.org/install.ps1 | iex"
其他安装方式(Python 安装脚本、包管理器等)请查看安装文档。
初始化一个新的 PDM 项目
pdm new my-project
按照指引回答提示的问题,一个 PDM 项目和对应的pyproject.toml文件就创建好了。
添加依赖
pdm add requests flask
你可以在同一条命令中添加多个依赖。稍等片刻完成之后,你可以查看pdm.lock文件看看有哪些依赖以及对应版本。
在 README.md 中加入以下 Markdown 代码,向大家展示项目正在使用 PDM:
[](https://pdm-project.org)
Awesome PDM 这个项目收集了一些非常有用的 PDM 插件及相关资源。
为项目启用 PEP 582:
pdm config python.use_venv False
这会让 PDM 将包安装到项目本地目录,而不是 venv 中(类似于 npm 安装到 node_modules)。
启用 uv 集成:
pdm config use_uv true
uv 是一个使用 Rust 编写的非常快的 Python 包安装器。
注意:uv 不能与 PEP 582 一起使用。
<a href="https://cdn.jsdelivr.net/gh/pdm-project/sponsors/sponsors.svg">
<img src="https://cdn.jsdelivr.net/gh/pdm-project/sponsors/sponsors.svg"/>
</a>
本项目基于 MIT 协议开源,具体可查看 LICENSE。