毎回Poetry
を調べてしまうので設定を書いておくことにしました~
Poetryとは
Pythonのパッケージング・依存関係管理のツール。
公式ページより以下抜粋
|
|
自分の理解
-
パッケージング: パッケージ作成、パッケージインストールなどを意味
- パッケージ作る時に
setup.py
とか作成してたけど.toml
に記載すればOKだよ~ - 使っているライブラリを
requirements.txt
で管理・共有していたけど、それも.toml
に記載するからOKだよ~
- パッケージ作る時に
-
依存関係管理:各ライブラリのバージョンや依存するライブラリを管理的な意味
-
あるプロジェクトで使用するパッケージを管理して
poetry install
コマンド一発で環境作れたり便利 -
あるプロジェクトで使用するタスク(テストなど)のコマンドを作成できる
-
npm
と同じですね(あんまりわかってないけどw) -
参考
インストール
インストール方法のうち、With the official installer
の方法でインストールしておけばOK
- Linux or WSL
1
curl -sSL https://install.python-poetry.org | python3 -
- Windows
1
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
ちなみに、インストールディレクトリはユーザーのディレクトリになる。具体的には以下。
- Linux
~/.local/share/pypoetry
- Windows
%APPDATA%\pypoetry
[オプション]補完設定
poetry help completions
で自身のシェルに合った方法で
completion設定すればOK
zsh
の場合1 2 3
$ poetry completions zsh > ~/.zfunc/_poetry $ fpath+=~/.zfunc $ autoload -Uz compinit && compinit
プロジェクト作成
- 新規作成の場合(フォルダごと作成)
1
$ poetry new <project-name>
- 既存プロジェクトの場合
1
$ poetry init
仮想環境設定
デフォルトでは.cache
ディレクトリに作成されるので
以下のコマンドでプロジェクトディレクトリ直下に作成するように設定
|
|
※.cache
ディレクトリの仮想環境が使用されてしまう場合
以下のコマンドで削除する。
|
|
スクリプト実行方法
- 単純に
.py
ファイルを実行する場合1
$ poetry run python hoge.py
poetry add
で入れたCLIが使えるライブラリの場合1
$ poetry run pytest
poetry.lockファイル
lock
だけに、ダウンロードしたパッケージのバージョンを
poetry.loc
ファイルに書き込んでプロジェクトでバージョンをロックする。
事前にpoetry.lock
が存在している場合に、poetry install
を実行すると
.toml
のリストした依存関係を解決してインストールする。
ただ、poetry.lock
ファイルにリストされている依存関係を守ってインストールされるので最新バージョンでない可能性がある。
依存関係が変更されてプロジェクトが壊れるのを防いでくれている。
個人的な理解
- バージョン管理(Git)等にコミットする方が望ましい
- 他の人が自分と同じ環境を作れるから
- 最新バージョンにしたい場合
lock
ファイルを削除して新しく入れなおす?lock
ファイルの最新版に上書きする?poetry update
?
依存関係グループ
プロジェクトのテストやドキュメントのビルドにのみ必要な依存関係などを 個別に管理できる。
新規の依存グル-プ
-
直接記述する場合
tool.poetry.group.<group名>.dependencies
でグループを作成する
1 2 3 4 5 6 7 8
[tool.poetry.dependencies] # main dependency group [tool.poetry.group.test] # This part can be left out [tool.poetry.group.test.dependencies] pytest = "^6.0.0" pytest-mock = "*"
-
コマンドで作成する場合
1
$ poetry add <パッケージ> --group <グループ名>
-
グループを指定したインストール
1
$ poetry install --only <グループ名>
-
グループを削除する場合
1
$ poetry remove mkdocs --group <グループ名>
パッケージング
以下のコマンドでパッケージング
|
|
実行後dist
ディレクトリが作成され、配下に以下が作成される。(2種類)
.whl
ファイルtar.gz
CLIツール作成時
project.toml
に以下のscripts
を追加する
命名規則はpackage.submodule:function
1 2
[tool.poetry.scripts] my_package_cli = 'my_package.console:run'
- 再インストール
1
$ poetry install
- 仮想環境に入る
1
$ poetry shell
- 作成したCLIコマンドを実行
1
$ hoge xxx
※タスクランナーはpoetryではない ※scriptsで使えそうだけど(参考)
タスクランナーを導入
taskipyがいいらしい。
- パッケージインストール
1
$ poetry add --dev taskipy # devは必要であれば
project.toml
に記載する1 2 3
[tool.taskipy.tasks] example = "python examples/example.py" test = "pytest tests"