概要
これまで、pyenv を使用していたので、pip を使用していたが、Python のバージョン管理を asdf を行うようにしたので、パッケージの管理も 依存関係の管理もできる potry に切り替えて行きたいと思います。
インストール
Poetry も asdf でインストールができたので、asdf でインストールしていきます。
asdf plugin add poetry
asdf install poetry latest
asdf global poetry 1.1.6
asdfについては↓を参照ください
poetry --version
# Poetry version 1.1.6
Poetry はデフォルトの設定だと virtual enviroment をプロジェクトのディレクトリ直下ではなく、キャッシュディレクトリ(Mac だと ~/Library/Caches/pypoetry)に作成してしまうので、下記のコマンドを実行し、virtual enviroment がプロジェクトの .venv/ 配下に作成されるようにします。
また、これをすることで、VSCodeでも実行環境の指定が可能になります。
poetry config virtualenvs.in-project true --local
パッケージ管理機能の使い方
プロジェクトの作成
適当なディレクトリで poetry new することで新規にディレクトリが作成され、必要なファイルが作成されます。既存ディレクトリの場合は、 poetry init でディレクトリ内にファイルが作成されます。
poetry new poetry-test
tree poetry-test
# poetry-test
# ├── README.rst
# ├── poetry_test
# │ └── __init__.py
# ├── pyproject.toml
# └── tests
# ├── __init__.py
# └── test_poetry_test.py
portry の設定ファイルである pyproject.toml の中身は↓のようになっています
[tool.poetry]
name = "poetry-test"
version = "0.1.0"
description = ""
authors = ["Yasuyuki Kikuchi <[email protected]>"]
[tool.poetry.dependencies]
python = "^3.9"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
パッケージの追加
poetry add で パッケージを追加します。
add コマンドは、pyproject.toml への設定の追加とインストールを行います。
今回は、 Python コードフォーマッタである black を追加します。
poetry add --dev black
pyproject.toml の中身を確認すると追加されています。
[tool.poetry.dev-dependencies]
pytest = "^5.2"
black = "^21.6b0"
依存関係のアップデート
依存関係をアップデートした場合には update コマンドを使用します。update コマンドは依存関係をチェックし、poetry.lock にその結果を記録します。
poetry update
poetry update <name>
# poetry update black pytest
パッケージの削除
remove コマンドを使用することで、pyproject.toml 及び環境から削除することが可能です。
poetry remove --dev black
パッケージのインストール
install コマンドを使用することで、pyproject.toml が読み込まれ、依存関係のファイルも含め、定義されているパッケージが全てインストールされます。
カレントディレクトリに poetry.lock にある場合は、そこに記載されているバージョンのパッケージがインストールされますが、存在しない場合には、依存関係を解消した状態で作成されます。
poetry intall
virtual enviroment でのプログラムの実行
poetry run を 使用することで、virtual enviroment でプログラムの実行が可能です。pytest や black のようなCLIツールの場合には、poetry run pytest の形式で実行が可能です。
poetry run python ./test.py
poetry run black ./test.py
virtual enviroment の activate
poetry shell で activate、exit で deactivate が可能です。
poetry shell
# activate
exit
# deactivate
コメント