跳转到主要内容

支持最新PEP标准的现代Python包和依赖管理器

项目描述

PDM

PDM是一个支持最新PEP标准的现代Python包和依赖管理器。 中文版本说明

PDM logo

Docs Twitter Follow Discord

Github Actions PyPI codecov Packaging status Downloads pdm-managed trackgit-views

asciicast

什么是PDM?

PDM旨在成为下一代Python包管理工具。它最初是为个人使用而构建的。如果您觉得您与 PipenvPoetry 相处得很好,并且不想引入另一个包管理器,请坚持使用它。但如果您觉得这些工具中缺少某些功能,您可能会在 pdm 中找到一些有用的功能。

功能亮点

  • 简单快速的依赖解析器,主要用于大型二进制分发。
  • 支持PEP 517的构建后端。
  • 支持PEP 621的项目元数据。
  • 灵活强大的插件系统。
  • 多样化的用户脚本。
  • 使用 indygreg 的 python-build-standalone 安装 Python。
  • 选择集中式安装缓存,例如 pnpm

与其他替代方案的比较

Pipenv

如名称所示,Pipenv 是一个将 pipvenv 结合在一起的依赖项管理器。它可以安装来自非标准 Pipfile.lockPipfile 的软件包。然而,Pipenv 不处理与打包你的代码相关的任何软件包,因此它仅适用于开发不可安装的应用程序(例如 Django 网站)。如果你是库开发者,你仍然需要 setuptools

Poetry

Poetry 以类似 Pipenv 的方式管理环境和依赖项,但它还可以使用你的代码构建 .whl 文件,并可以将 wheel 和源分发上传到 PyPI。它有一个相当友好的用户界面,用户可以通过插件进行自定义。Poetry 使用 pyproject.toml 标准,但它不遵循指定如何在 pyproject.toml 文件中表示元数据的标准(PEP 621),而是使用自定义的 [tool.poetry] 表。这部分的理由是因为 Poetry 在 PEP 621 之前发布。

Hatch

Hatch 也可以管理环境,允许每个项目有多个环境。默认情况下,它有一个所有环境的中心位置,但可以配置为将项目环境(们)放在项目根目录下。它可以管理软件包,但没有锁文件支持。它还可以用于打包项目(使用符合 PEP 621 的 pyproject.toml 文件)并将其上传到 PyPI。

本项目

PDM 可以在项目和集中位置管理虚拟环境(venvs),类似于 Pipenv。它从标准化的 pyproject.toml 文件中读取项目元数据并支持锁文件。用户可以通过插件添加更多功能,这些插件可以通过上传它们作为分发来共享。

与 Poetry 和 Hatch 不同,PDM 不仅仅局限于特定的构建后端;用户可以选择他们喜欢的任何构建后端。

安装

PDM 需要 3.8 或更高版本的 Python。

通过安装脚本

与 Pip 一样,PDM 提供了一个安装脚本,该脚本将 PDM 安装到一个隔离的环境中。

对于 Linux/Mac

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

对于 Windows

(Invoke-WebRequest -Uri https://pdm-project.org/install-pdm.py -UseBasicParsing).Content | py -

出于安全原因,你应该验证 install-pdm.py 的校验和。它可以从 install-pdm.py.sha256 下载。

安装程序将 PDM 安装到用户站点,位置取决于系统

  • $HOME/.local/bin 对于 Linux
  • $HOME/Library/Python/<version>/bin 对于 MacOS
  • %APPDATA%\Python\Scripts 在 Windows 上

您可以通过传递额外的选项来控制 PDM 的安装方式

usage: install-pdm.py [-h] [-v VERSION] [--prerelease] [--remove] [-p PATH] [-d DEP]

optional arguments:
  -h, --help            show this help message and exit
  -v VERSION, --version VERSION | envvar: PDM_VERSION
                        Specify the version to be installed, or HEAD to install from the main branch
  --prerelease | envvar: PDM_PRERELEASE    Allow prereleases to be installed
  --remove | envvar: PDM_REMOVE            Remove the PDM installation
  -p PATH, --path PATH | envvar: PDM_HOME  Specify the location to install PDM
  -d DEP, --dep DEP | envvar: PDM_DEPS     Specify additional dependencies, can be given multiple times

您可以在脚本之后传递选项,或者设置环境变量的值。

其他安装方法

如果您在 macOS 上使用 homebrew,可以通过以下方式安装:

brew install pdm

如果您在 Windows 上使用 Scoop,可以通过以下方式安装:

scoop bucket add frostming https://github.com/frostming/scoop-frostming.git
scoop install pdm

否则,建议使用 pipx 在隔离环境中安装 pdm

pipx install pdm

或者您可以在用户站点下安装它

pip install --user pdm

使用 asdf-vm

asdf plugin add pdm
asdf install pdm latest

快速入门

初始化一个新的 PDM 项目

pdm init

根据指南回答问题,一个带有 pyproject.toml 文件的 PDM 项目即可投入使用。

安装依赖项

pdm add requests flask

您可以在同一命令中添加多个依赖项。一段时间后,检查 pdm.lock 文件以查看每个软件包的锁定情况。

徽章

通过在 README.md 中包含 markdown 代码来告诉人们你在你的项目中使用 PDM。

[![pdm-managed](https://img.shields.io/endpoint?url=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fpdm-project%2F.github%2Fbadge.json)](https://pdm-project.org)

pdm-managed

打包状态

Packaging status

PDM 生态系统

Awesome PDM 是一个精选的 PDM 插件和资源列表。

赞助商

鸣谢

本项目强烈受到 pyflowpoetry 的启发。

许可

本项目采用MIT许可开源,更多详情请参阅LICENSE文件。

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

pdm-2.19.1.tar.gz (2.6 MB 查看哈希值)

上传

构建分布

pdm-2.19.1-py3-none-any.whl (279.8 kB 查看哈希值)

上传 Python 3

由以下支持:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面