📝
Pythonのパッケージ管理ツールのコマンド比較表
この記事は何?
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の違いについてはこちらの記事がわかりやすいです。
Ryeは比較的新しいツールで、単体でPythonのバージョン管理もできるようになっています。pyenvを使わなくて良くなるので、今後はRyeを積極的に使いたいと思いました。
Discussion