PDMっていう新しいPythonパッケージマネージャが出ているのでこれをお勧めしてみたい。
Poetryとの比較
僕もお勧めしているPythonパッケージマネージャの Poetry と比べていいところと悪いところを挙げてみます。
いいところ
1. インストールが楽(macOS限定)
Poetry も Homebrew からインストールできるんですが,開発元サイトでは curl を使ってGitHubからインストールする方法を推奨していて,実際,その方法でないと poetry self update
ができないので,新しい変更に追随できません。
一方,PDMも curl を使ってGitHubからインストールする方法が標準ですが,その方法だと逆にPDMをアップデートする方法が提供されていません。素直に Homebrew でインストールする方が楽ですし,アップデートも最新のものに追随しているのでお勧めです。
2. 仮想環境を作らない
これがPDMの一番の特徴だと思いますが,PDMはデフォルトでは仮想環境を作りません(設定で仮想環境を利用するようにはできる)。
PDMも基本的には,プロジェクトフォルダ(何も指定しなければ,最初に pdm init
を実行したフォルダ)に必要なファイルが生成され,プロジェクトフォルダ内で pdm run
でプログラムを実行するとそのフォルダにインストールしたパッケージが使われます。これだけをみていると,Poetry で,仮想環境をプロジェクトフォルダに作るように設定( poetry config virtualenvs.in-project true
)した時と似てるんですが,ちょっと違います。
仮想環境を作らないのがなぜいいかというと,同じメジャーバージョンであれば,Python インタプリタを切り替える際にライブラリをインストールし直す必要がありません。
仮想環境は,内部で Python インタプリタを参照しています(より正確にいうとシンボリックリンクを貼っている)。ですから,マイナーバージョンひとつであっても,バージョンが異なれば,仮想環境から作り直す必要があります。このおかげで Python のバージョンを 3.9.6 から 3.9.7 に挙げただけで poetry update
(または poetry install
)し直す必要があります。
3. 依存パッケージのバージョンチェックが緩い?
Poetry はなんかよく分からないところでバージョンのコンフリクトが発生してパッケージをインストールできないことがあります。パッケージの内容とか依存パッケージの中身とか見ても,コンフリクトしないはずなんですが,追いきれていないところでバージョンのコンフリクトが発生しているのかもしれません。とにかく,厳密なのかそれともうまくコンフリクト解消できないのか分かりませんが,Poetry だとインストールできないパッケージがあります。
そういった場合にPDMを使ってみるとすんなりとインストールできたりします。
これまでしばらく使ってみていますが,PoetryでインストールできないパッケージがPDMでインストールできる例はありますが,逆のパターンはありませんでした。
もしかするとPDMのバージョンチェックが甘いのかもしれませんが,今のところ実用上問題はないんで,PDMの方が精神衛生上良いな...と思います。
4. 速い
Poetryも速いですが,PDMも相当に速いです。比べてはいませんが,多分同等には速いんじゃないかと思います。
悪いところ
1. 手軽なアップデート方法がない(macOS以外)
Poetry はいったんインストールしてしまえば poetry self update
で Poetry 自身をアップデートできますが,PDMにはそういったアップデート方法は提供されておらず,最新版に追いつくためにはインストールと同じ,curl を使った手順を踏むことになります。
使い方
ぽちぽちと追記していきたいと思います。