株式会社OMJテクノソリューションズ Advent Calendar 2023 11日目の記事です。
pythonでのバージョン管理方法としてpipとrequirement.txtくらいしか触ったことなかったのですが、どうやらpoetryというものがあるとのこと。詳しいことは理解できてませんがざっくり使える程度を目指して以下に備忘録を作成します。誰かしらの参考になれば幸いです。
環境
・Apple M1
・macOS Ventura
・Python 3.9.6
・Poetry 1.7.1
セットアップ
今回は既存のプロジェクトをpoetryで管理する流れだったので、既存プロジェクトディレクトリ配下にて以下を実行します。
poetry init
そうすると英語で色々聞かれます。
とりあえずエンターを連打して進むとpyproject.toml
が作成されます。以下が例です。
このpyproject.toml
が色々いじっていく設定ファイルです。
[tool.poetry]
name = "sample"
version = "0.1.0"
description = ""
authors = ["author_name <sample@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.9"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
※新規プロジェクトの場合
poetry new <プロジェクト名>
を実行すると以下が生成されます。雛形+pyproject.toml みたいな感じ。
<プロジェクト名>
├── pyproject.toml
├── README.md
├── poetry_demo
│ └── __init__.py
└── tests
└── __init__.py
依存パッケージの追加
pyproject.toml
作成後、依存パッケージを追加していきます。
追加方法は2パターンあります。
1.pyproject.toml
に直接記載
pendulumを追加する場合、バージョン範囲と合わせて記載。
[tool.poetry.dependencies]
python = "^3.9"
pendulum = "^1.4"
pyproject.toml
に記載後、
poetry lock
を実行するとpoetry.lock
が生成されます。
poetry.lock
はプロジェクトの依存関係を特定のバージョンで固定するための設定ファイルになります。pyproject.toml
の内容を更新した場合は lock を実行してpoetry.lock
も更新します。
2.addを使う
poetry add pendulum
addを利用するとpyproject.toml
, poetry.lock
共に更新(作成)されます。
バージョン指定する場合は
poetry add pendulum@1.4
ちなみに削除する場合は
poetry remove pendulum
インストール
仮想環境内でpyproject.toml
, poetry.lock
に従いインストールするには
poetry install
これでpyproject.toml
そろえた依存パッケージをインストールできます。
その他
パッケージの切り分け
dev環境にだけblackを入れたい場合。
poetry add --group dev black
pyproject.toml
にdev groupとして追加されます。
開発用パッケージと切り分けできます。
[tool.poetry.dependencies]
python = "^3.9"
pendulum = "1.4"
[tool.poetry.group.dev.dependencies]
black = "^23.11.0"
依存パッケージの最新化
poetry update
事前にdry runで更新内容確認できます。
poetry update --dry-run