はじめに#
「OKAZAKI Shogo のひとりアドベントカレンダー2024」の2日目です。 昨日に引き続いて、Flask で Web アプリを作っていくのを進めます。まずは、モダンなパッケージ依存関係管理ツールの Poetry の使い方を確認します。
Poetry とは#
Poetry は Python の依存パッケージと仮想環境管理を行うためのツール。 mac の場合は、 brew 経由でインストール可能:
1brew install poetryPoetry を使ってプロジェクトを作成する#
以下のコマンドをプロジェクト作成前に実行し、 Poetry プロジェクト内に .venv がつくられるようにする。
1poetry config virtualenvs.in-project true --localすでにプロジェクトのフォルダを作成している場合は以下のコマンドを実行し、 Poetry プロジェクトを開始する。
1poetry init以下のように質問されるが大体デフォルトでOK。終わると、 pyproject.toml だけが作成される。
1$ poetry init
2
3This command will guide you through creating your pyproject.toml config.
4
5Package name [flask-sample]:
6Version [0.1.0]:
7Description []:
8Author [None, n to skip]: OKAZAKI Shogo
9License []:
10Compatible Python versions [^3.13]:
11
12Would you like to define your main dependencies interactively? (yes/no) [yes]
13You can specify a package in the following forms:
14 - A single name (requests): this will search for matches on PyPI
15 - A name and a constraint (requests@^2.23.0)
16 - A git url (git+https://github.com/python-poetry/poetry.git)
17 - A git url with a revision (git+https://github.com/python-poetry/poetry.git#develop)
18 - A file path (../my-package/my-package.whl)
19 - A directory (../my-package/)
20 - A url (https://example.com/packages/my-package-0.1.0.tar.gz)
21
22Package to add or search for (leave blank to skip):
23
24Would you like to define your development dependencies interactively? (yes/no) [yes]
25Package to add or search for (leave blank to skip):
26
27Generated file
28
29[tool.poetry]
30name = "sample-project"
31version = "0.1.0"
32description = ""
33authors = ["OKAZAKI Shogo"]
34readme = "README.md"
35
36[tool.poetry.dependencies]
37python = "^3.13"
38
39
40[build-system]
41requires = ["poetry-core"]
42build-backend = "poetry.core.masonry.api"
43
44
45Do you confirm generation? (yes/no) [yes]フォルダごと作成したい場合は以下のコマンド。
1poetry new <project-name>poetry new を実行すると、以下のようなフォルダ構造が作られる。
pyproject.toml は Python 標準の設定ファイル(PEP518)
中身はこんな感じ:
[tool.poetry]: プロジェクトの基本的なメタデータの設定[tool.poetry.dependencies]: プロジェクトの依存パッケージのリスト[build-system]: Poetry をプロジェクト管理に使うビルドシステムとして指定
Poetry にライブラリを追加#
poetry add コマンドで必要なライブラリを追加できる1:
1poetry add flaskPoetry 環境を構築#
以下のコマンドで、実際に環境を構築する。
- プロジェクトルート直下に
poetry.lockが作成される2- すでに存在する場合は、
poetry.lockに書かれたバージョンを利用してパッケージがインストールされる
- すでに存在する場合は、
virtualenvs.in-project trueが設定できている場合はプロジェクトルート直下に.venvフォルダが作成される.venvフォルダが作られていない場合は既に virtualenv が作られている場合があるので、poetry env remove <env-name>で一度削除して再度環境を作り直す
1poetry installPoetry 環境での実行#
以下のコマンドで Poetry 環境でコマンドを実行できる3。
1poetry run <コマンド>Poetry 環境に入る#
以下のコマンドで poetry 環境に入ることができる4。
1poetry shell