Skip to content
PDM logo

Introduction#

PDMはPythonのパッケージと依存関係を管理する最新のPEP標準をサポートするマネージャーです。しかし、これは単なるパッケージマネージャではありません。さまざまな面で開発ワークフローを強化します。

Feature highlights#

  • 主に大規模なバイナリ配布用の、シンプルで高速な依存関係のリゾルバ。
  • PEP 517ビルドバックエンド。
  • PEP 621プロジェクトメタデータ。
  • 柔軟で強力なプラグイン方式です。
  • 汎用性の高いユーザースクリプト。
  • indygreg's python-build-standaloneを使用したPythonのインストール。
  • pnpmのような集中インストールキャッシュ。

Installation#

PDMにはPython 3.8+がインストールされている必要があります。Windows、Linux、macOSなど複数のプラットフォームで動作します。

Note

プロジェクトを下位バージョンのPythonで動作させることもできます。その方法については、hereを参照してください。

PDMにはPythonバージョン3.8以上が必要です。

Pipと同様に、PDMは、PDMを独立した環境にインストールするインストールスクリプトを提供します。

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

Note

Windowsでは、オプションのpyランチャーツールがインストールされていない場合(MicrosoftストアからPythonをインストールした場合を含む)、pypythonに置き換えてください。

セキュリティ上の理由から、install-pdm.pyのチェックサムを確認するべきです。

install-pdm.py.sha256からダウンロードできます。

たとえば、Linux/Macの場合は次のようになります。

1
2
3
4
curl -sSLO https://pdm-project.org/install-pdm.py
curl -sSL https://pdm-project.org/install-pdm.py.sha256 | shasum -a 256 -c -
# Run the installer
python3 install-pdm.py [options]

インストーラはPDMをユーザーサイトにインストールします。インストール場所はシステムによって異なります。

  • $HOME/.local/bin Unixの場合
  • $HOME/Library/Python/<version>/bin MacOSの場合
  • %APPDATA%\Python\Scripts Windowsの場合

スクリプトに追加のオプションを渡して、PDMのインストール方法を制御できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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

スクリプトの後にオプションを渡すか、env var値を設定します。

Other installation methods#

1
brew install pdm
1
2
scoop bucket add frostming https://github.com/frostming/scoop-frostming.git
scoop install pdm
1
uv tool install pdm
1
pipx install pdm

GitHubリポジトリのHEADバージョンをインストールします。システムにGit LFSがインストールされていることを確認します。

1
pipx install git+https://github.com/pdm-project/pdm.git@main#egg=pdm

すべての機能を含むPDMをインストールするには、次の手順に従います:

1
pipx install pdm[all]

See also: https://pypa.github.io/pipx/

1
pip install --user pdm

asdfがインストールされていると仮定します。

1
2
3
asdf plugin add pdm
asdf local pdm latest
asdf install pdm

Pyprojectxラッパースクリプトをプロジェクトにコピーすることで、そのプロジェクト内に(npmスタイルの)dev依存関係としてPDMをインストールできます。これにより、異なるプロジェクト/ブランチで異なるPDMバージョンを使用できます。

initialize a new or existing projectには、プロジェクトフォルダにcdして、次のようにします:

1
2
curl -LO https://github.com/pyprojectx/pyprojectx/releases/latest/download/wrappers.zip && unzip wrappers.zip && rm -f wrappers.zip
./pw --add pdm
1
2
Invoke-WebRequest https://github.com/pyprojectx/pyprojectx/releases/latest/download/wrappers.zip -OutFile wrappers.zip; Expand-Archive -Path wrappers.zip -DestinationPath .; Remove-Item -Path wrappers.zip
.\pw --add pdm

この方法でpdmをインストールする場合は、すべてのpdmコマンドをpwラッパーを使用して実行する必要があります。:

1
./pw pdm install

Update the PDM version#

1
pdm self update

Packaging Status#

Packaging status

Shell Completion#

PDMは、Bash、Zsh、Fish、またはPowershellの補完スクリプトの生成をサポートしています。各シェルの一般的な場所を次に示します。

1
pdm completion bash > /etc/bash_completion.d/pdm.bash-completion
1
2
# Make sure ~/.zfunc is added to fpath, before compinit.
pdm completion zsh > ~/.zfunc/_pdm

Oh-My-Zsh:

1
2
mkdir $ZSH_CUSTOM/plugins/pdm
pdm completion zsh > $ZSH_CUSTOM/plugins/pdm/_pdm

次に、pdmプラグインが~/.zshrcで有効になっていることを確認します。

1
pdm completion fish > ~/.config/fish/completions/pdm.fish
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Create a directory to store completion scripts
mkdir $PROFILE\..\Completions
echo @'
Get-ChildItem "$PROFILE\..\Completions\" | ForEach-Object {
    . $_.FullName
}
'@ | Out-File -Append -Encoding utf8 $PROFILE
# Generate script
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
pdm completion powershell | Out-File -Encoding utf8 $PROFILE\..\Completions\pdm_completion.ps1

Virtualenv and PEP 582#

PDMは、virtualenv管理に加えて、オプトイン機能としてPEP 582を実験的にサポートしています。the Python Steering Council has rejected PEP 582が、PDMを使用してテストすることはできます。

2つのモードの詳細については、Working with virtualenvおよびWorking with PEP 582の関連する章を参照してください。

PDM Eco-system#

Awesome PDM はPDMのすばらしいプラグインとリソースを集めたリストです。

Sponsors#