Table of Contents
Poetry install
- poetry installコマンドは, 現在のプロジェクトの- pyproject.tomlから依存関係を解決しながらpackageを仮想環境へセットアップするコマンドです.
- poetry.lockが存在する場合は, そこに記載されたversionを読み込む形で仮想環境セットアップが行われます.
Project repositoryのインストール
pyproject.tomlが現在のプロジェクトで以下のように設定されているとします.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["Sébastien Eustace <sebastien@eustace.io>"]
readme = "README.md"
packages = [{include = "poetry_demo"}]
[tool.poetry.dependencies]
python = "^3.7"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
Poetryは, プロジェクトのルートに tool.poetry.nameと同じ名前のパッケージ(上の例ではpoetry-demoディレクトリ)を含むと想定しています. そのため, poetry installを実行するとき, poetry-demoディレクトリの中身はパッケージとして仮想環境にインストールされます.
一方, poetry-demoディレクトリが存在しない場合は, poetry install --no-rootでインストールするべきとの警告が出現します.
groupからパッケージをインストールする場合
- 特定のグループを除外して読み込む場合
- 特定のグループを明示的に指定してmainグループと一緒に読み込む場合
- 特定のグループのみを読み込む場合
それぞれのパターンがあります
1
2
3
4
5
6
7
8
# 特定のグループを除外して読み込む場合
poetry install --without test,docs --sync
# 特特定のグループを明示的に指定してmainグループと一緒に読み込む場合
poetry install --with test,docs --sync
# 特定のグループのみを読み込む場合
poetry install --only test,docs --sync
--sync optionは選択したグループとpoetry.lockの記載内容の整合性を整えるために使用されるオプションです.
プロジェクト配下に存在する特定のディレクトリをpoetry addする場合
tool.poetry.nameに記載されていない名前で, project root直下に存在するディレクトリについてインストール死体場面を考えます. 下の例では, utilities_dir以下に存在するrepository_utilitiesパッケージをインストールしたいとします.
1
2
3
4
5
6
7
8
9
.
├── docs
├── utilities_dir
│     └── repository_utilities
├── license
├── poetry.lock
├── pyproject.toml
├── README.md
└── poetry-demo
pyproject.tomlに以下のように記述することで, poetry installやpoetry update実施後, 
repository_utilitiesを普通のモジュールと同じようにimportで呼ぶことができるようになります.
1
2
3
packages = [
    { include = "repository_utilities", from = "utilities_dir" }
]
GitHub private repositoryをpoetry addする場合
poetry addの方法として以下の2つが考えられます
- https経由で- poetry add
- ssh経由で- poetry add
また, 上記それぞれに対して特定のbranchを対象にしたい場合というケースの計4パターンが考えられます.
User kirbyの test_repository レポジトリを加える場合を例にコマンド例を以下紹介します
1
2
3
4
5
6
7
8
9
10
11
# (1-a) https経由でmainをadd
% poetry add git+https://github.com/kirby/test_repository.git
# (1-b) https経由でdevelop branchをadd
% poetry add git+https://github.com/kirby/test_repository.git#develop
# (2-a) ssh経由でmainをadd
% poetry add git+ssh://git@github.com/kirby/test_repository.git
# (2-b) ssh経由でdevelop branchをadd
% poetry add git+ssh://git@github.com/kirby/test_repository.git#develop
上記のコマンドを実行すると,pyproject.tomlに
1
2
3
[tool.poetry.dependencies]
python = ">=3.11,<4.0"
test_repository = {git = "https://github.com/kirby/test_repository.git"}
という形でパッケージ情報が記載されます. または poetry show でdependencyを含め確認することもできます.
Repository先で更新が走った場合
レポジトリ先で更新が入った場合は, poetry updateで変更内容を
反映させることができます.
1
2
3
4
5
6
7
8
9
% poetry update
Updating dependencies
Resolving dependencies... (1.8s)
Package operations: 0 installs, 1 update, 0 removals
  - Updating test_repository (0.1.0 1cbd71e -> 0.1.0 083db26)
Writing lock file
References
(注意:GitHub Accountが必要となります)