📝

Pythonのパッケージ管理ツールのコマンド比較表

2023/11/27に公開

この記事は何?

Pythonのパッケージ管理・仮想環境管理ツールが色々ありすぎて、それぞれのツールのコマンドがよく分からなくなってしまったので、コマンドの比較表を作成したものです。

各ツールの利用方法や詳細な挙動は紹介しません。詳しい情報は各ツールのドキュメント等を参照してください。

対象ツール

ツール 機能 特徴
pip パッケージの管理 - Pythonの標準パッケージマネージャー
- PyPIからパッケージをインストール
venv 仮想環境の管理 - プロジェクトごとに独立したPython環境を作成
pyenv Pythonバージョンの管理 - 複数のPythonバージョンをインストール・管理
- グローバルやプロジェクト単位でのバージョン切替
Poetry パッケージ+仮想環境管理 - pyproject.tomlを使った依存関係管理
- パッケージのビルドと公開を容易に実行可能
Pipenv パッケージ+仮想環境管理 - Pipfileを使用して依存関係を管理
Rye パッケージ+仮想環境+Pythonバージョン管理 - Pythonバージョン管理も含めて、すべてこれ1つで完結できるツール

コマンド比較表

  • 各コマンドは2023年11月現在の最新バージョンのドキュメントを参考にしています。
  • 「コマンドの種類」に対する各ツールの機能が異なる場合がありますが、説明は省略します。あくまで似た機能を一覧化したものだと思ってください。

パッケージ管理

  • パッケージの追加や削除。venvとpyenvはここでは使わない。
  • Poetry, Pipenv, Ryeは開発環境のみで利用するための指定が可能。
コマンドの種類 pip venv pyenv Poetry Pipenv Rye
新しいパッケージをインストールする pip install package_name - - poetry add package_name pipenv install package_name rye add package_name
開発用パッケージをインストールする pip install package_name - - poetry add --dev package_name pipenv install --dev package_name rye add -G dev package_name
パッケージをアンインストールする pip uninstall package_name - - poetry remove package_name pipenv uninstall package_name rye remove package_name
インストール済みのパッケージを表示する pip freeze - - poetry show pipenv graph 不明
requirements.txtを出力する pip freeze > requirements.txt - - poetry export -f requirements.txt --output requirements.txt pipenv requirements > requirements.txt rye lock
依存関係をインストールする pip install -r requirements.txt - - poetry install pipenv install rye sync

仮想環境の管理

  • 仮想環境の作成や、仮装環境内でのコマンド実行。
コマンドの種類 pip venv pyenv Poetry Pipenv Rye
新しい仮想環境を作成する - python -m venv .venv - poetry new proj-name pipenv --python 3 rye init proj-name
仮想環境で実行する - - - poetry run <command> pipenv run <command> rye run <command>
仮想環境に入る - source .venv/bin/activate - poetry shell pipenv shell . .venv/bin/activate
仮想環境から出る - deactivate - exit exit deactivate
プロジェクトをビルドする - - - poetry build - rye build

Pythonバージョンの管理

  • 複数のPythonバージョンをインストールしたり、プロジェクトごとにPythonのバージョンを管理する機能。
  • PoetryやPipenvではpyenvで必要なバージョンを用意する必要があるが、Ryeでは自動的に用意してくれる。rye pinの挙動の詳細はこちらを参照。
コマンドの種類 pip venv pyenv Poetry Pipenv Rye
Pythonバージョンをインストール - - pyenv install 3.10 - - rye pin 3.10
グローバルPythonバージョンを設定 - - pyenv global 3.10 - - -
ローカルPythonバージョンを設定 - - pyenv local 3.10 - - -
インストールされているPythonバージョンの一覧 - - pyenv versions - - -

その他

  • 各ツールの設定ファイルなど。
  • lockファイルはパッケージのバージョンを管理するためのもので、ユーザーは編集しない。
コマンドの種類 pip venv pyenv Poetry Pipenv Rye
設定ファイル名 requirements.txt - - pyproject.toml Pipfile pyproject.toml
lockファイル名 - - - poetry.lock Pipfile.lock requirements.lock, requirements-dev.lock

補足

pip, Pipenv, Poetryの違いについてはこちらの記事がわかりやすいです。

https://vaaaaaanquish.hatenablog.com/entry/2021/03/29/221715#--pipenvとpoetryの技術的歴史的背景--

Ryeは比較的新しいツールで、単体でPythonのバージョン管理もできるようになっています。pyenvを使わなくて良くなるので、今後はRyeを積極的に使いたいと思いました。

GitHubで編集を提案

Discussion