LoginSignup
0
1

株式会社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が色々いじっていく設定ファイルです。

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を追加する場合、バージョン範囲と合わせて記載。

pyproject.toml
[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として追加されます。
開発用パッケージと切り分けできます。

pyproject.toml
[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
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1