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が必要となります)