Poetryのすすめ
2024/8/28
Python
Poetry
はじめに
Pythonのパッケージを管理してくれる便利なツールであるPoetryを紹介します。
基本的な使い方も説明しているので最後まで見ていってください!
Poetryとは
Poetryは、Pythonプロジェクトの依存関係管理を効率的に⾏うためのツールです。
Poetryを導⼊すれば、requirements.txt
によるパッケージ管理から解放されます。
Poetryの良いところ
- パッケージの⼀元管理が可能
開発環境時のみ利⽤するライブラリ(
black
やflake8
等)は、本番環境にはインストールしたくないですよね、、こういうとき、開発環境⽤、本番環境用の
requirements.txt
をそれぞれ作らなければいけません。Poetryでは、
pyproject.toml
というファイルで、開発環境用パッケージと本番環境用パッケージを⼀元管理します。また、formattter/linterの設定もこのファイルで管理可能です。
- 簡単に仮想環境を構築できる
コマンド⼀つで、簡単に仮想環境を⽴ち上げることができ、 pyproject.tomlファイルに記載された依存 関係をもとに仮想環境を構築してくれます。
- ヒューマンエラーの軽減
Poetryを利⽤する前は、
requirements.txt
に、以下コマンドでパッケージ情報を出⼒していました。pip freeze > requirements.txt
新しいパッケージをインストールする度に、更新しないといけないし、忘れる⼈もでてくると思いま す。
忘れた場合、バグの原因になりますし、チームメンバー間で開発環境が変わってしまったり もします。
Poetryを使うと、
requirements.txt
⾃体不要で、新しいパッケージをインストールするたびに⼿動で テキストファイルを更新する必要がなくなります。また、依存関係が⾃動的に記録され、再現可能な環境が維持されます。
パッケージ管理ファイルは⾃動更新されるのでヒューマンエラーも軽減できるってわけです。
すばらしい、、
pyproject.tomlとpoetry.lock
上記の通り、pyproject.toml
でパッケージの⼀元管理ができ、poetry.lock
が⾃動⽣成されます。
これにより、チームメンバ ーと同じ環境で作業できます。
Nodejsでいう、package.json
とpackage.lock.json
と思ってもらえるとイメージつきやすいと思います。
導⼊
https://python-poetry.org/docs/#installing-with-the-official-installer
↑こちらに分かりやすくインストール⽅法が載っているので、リンクサイト(公式)を参考に導⼊してくださ い。
補足
バージョン指定したい場合
※最新バージョンである「1.8.2」を指定します。(2024/4現在)
- Linux、macOS、Windows (WSL)
curl -sSL https://install.python-poetry.org | python3 - --version 1.8.2
- Windows (Powershell)
(Invoke-WebRequest -Uri https://install.python-poetry.org - UseBasicParsing).Content | py - --version 1.8.2
基本的な使い⽅
poetryのバージョン更新
Poetry⾃体をバージョン更新します。
公式に以下注意書きがあったので、Windows環境でPoetryを利用している場合は、インストーラーを使用して再インストールするようにしましょう
Especially on Windows,
self update
may be problematic so that a re-install with the installer should be preferred.
poetry self update
Pythonプロジェクトのセットアップ
poetry new my_project
実⾏すると、以下ディレクトリが構築されます。
my_project
├── pyproject.toml
├── README.md
├── <project名>
│ └── __init__.py
└── tests
└── __init__.py
Poetryの初期化
既にプロジェクトフォルダを作成済みだったり、必要最低限のファイルだけあれば良い⽅は以下コマンドを 実⾏してください
同時に仮想環境も作成されます。
poetry init -n
-n
オプションは、実⾏時に求められる⼊⼒を省略できます。
実⾏完了すると、pyproject.toml
のみ作成されます。
パッケージのインストール
仮想環境とlockファイルを⽣成し、pyproject.toml
に記載されたパッケージ をインストールします。
--without dev
オプションを付けることで、開発環境でのみ利⽤するパッケージを除いてインストールしてく れます。 開発環境⽤のパッケージの追加⽅法は後述します。--no-root
オプションは、プロジェクトのルートパッケージをインストールしないオプションです。これがないとwarningなるので注意。
poetry install --no-root
# 本番環境を想定した場合
poetry install --no-root --without dev
仮想環境のアクティブ/⾮アクティブ化
poetry.toml
ファイルが配置されているディレクトリで以下を実⾏します。
# アクティブ化
poetry shell
# ⾮アクティブ化
deactivate
スクリプト実⾏
仮想環境内のPythonを利⽤して、スクリプトを実⾏する場合に使います。
poetry run python your_script.py
poetry run
を使わなくても、仮想環境をアクティブ化してからでも同様の結果を得られます。
# poetry runを使わない場合
poetry shell
python your_script.py
パッケージの追加
poetry.toml
ファイルが配置されているディレクトリで以下を実⾏します。
仮想環境が、アクティブ/⾮アクティブに関係なく実⾏可能です。
実⾏完了すると、tomlファイルが⾃動更新されます。
※pyproject.toml
の [tool.poetry.group.dev.dependencies]
に、開発環境でのみ使うパッケージが追記されます。
poetry add <パッケージ名>
# 開発環境にのみインストールしたい場合
poetry add --group dev <パッケージ名>
※パッケージのバージョンを指定したい場合
# latest version
poetry add <パッケージ名>@latest
# Allow >=2.0.5, <3.0.0 versions
poetry add <パッケージ名>@^2.0.5
# Allow >=2.0.5, <2.1.0 versions
poetry add <パッケージ名>@~2.0.5
# Allow >=2.0.5 versions, without upper bound
poetry add "<パッケージ名>>=2.0.5"
# Allow only 2.0.5 version
poetry add <パッケージ名>==2.0.5
パッケージのアップデート/削除/一覧表示
poetry update
# 特定のパッケージだけを更新したい場合
poetry update <パッケージ名>
# パッケージの削除
poetry remove <パッケージ名>
# パッケージの⼀覧表⽰
poetry show
Poetryの設定確認/変更
poetryの設定確認
poetry config --list
poetryの設定変更
設定を⾃由に変更できます。
例えば仮想環境を作らないようにすることも可能です。
poetry config <オプション名> <設定値>
# 例)仮想環境を作成しない場合
poetry config virtualenvs.create false
他にもいろいろ設定変更できるので、poetry config --list
コマンドで確認してみてください。
各設定について知りたい⽅はこちら(公式)を参照してください。
まとめ
これまでに、Poetryのメリットや使い⽅を紹介してきました。
最後にまとめると、
- Poetryは、Pythonパッケージを簡単に管理してくれるツール
- コマンド⼀つで簡単に仮想環境を構築してくれる
- パッケージ管理している
pyproject.toml
が⾃動更新されるため、パッケージ管理が楽 - チーム間で、開発環境を簡単に共有・再現することが可能
pip、requirements.txtでパッケージ管理している⽅は、ぜひ使ってみてください
プロフィール
タグ一覧