背景
昨年末2019/12/12に、Poetryが1.0.0を迎えていたので、試してみた。
概要
Poetryとは、Python用パッケージング・依存関係管理ツール。
類似したツールとして、
setuptoolsやPipenvがありますが、Poetryこれ1つで両方の機能をまかなえる。
「tomlファイル1つあればいい」というところに惹かれる。というか素晴らしいと思った。
バージョン
poetry v1.0.5 (2020/05/11現在最新)
プロジェクトの作成
https://python-poetry.org/docs/basic-usage/
https://python-poetry.org/docs/cli/#new
$ poetry new <project名>
実行後には、次のようなフォルダが作られる。
<project名>
├── pyproject.toml
├── README.rst
├── poetry_demo
│ └── __init__.py
└── tests
├── __init__.py
└── test_poetry_demo.py
作られたフォルダに含まれるpyproject.toml
が、poetryの設定ファイルである。
setup.py
/setup.cfg
/Pipfile
に置き換わるファイルであり、各ファイルに書いていた内容はpyproject.toml
に記載する事できる。
調べれば、だいたい置き換えられるので、気になった人は公式ページのリンクを見てもらいたい。
https://python-poetry.org/docs/pyproject/
[tool.poetry]
name = "<project名>"
version = "0.1.0"
description = ""
authors = ["Sébastien Eustace <sebastien@eustace.io>"]
[tool.poetry.dependencies]
python = "*"
[tool.poetry.dev-dependencies]
pytest = "^3.4"
ライブラリの追加
# 依存ライブラリ追加
$ poetry add requests
# 開発用の依存ライブラリ追加
$ poetry add --dev requests
バージョンももちろん指定できる。requirements.txt
/setup.py
/Pipfile
と大差ないようだ。
https://python-poetry.org/docs/dependency-specification/
仮想環境の作成、開発モードでのインストール
$ poetry install
仮想環境でのコマンド実行
https://python-poetry.org/docs/cli/#run
https://python-poetry.org/docs/cli/#shell
# 単発で実行
$ poetry run python -m pip list
# shellで実行
$ poetry shell
pyproject.toml
に、実行したいPythonモジュールを指定することで、npm-scriptsのようなこともできるようだ。
[tool.poetry.scripts]
my-script = "my_module:main"
$ poetry run my-script
パッケージング
$ poetry build
デフォルトでは、sdist/wheel両方が作成される。
--format
オプションでどちらか一方だけにすることもできる。
requirements.txtへの出力
$ poetry export -f requirements.txt > requirements.txt
v1.0.2では、requirements.txtの形式しかサポートしてないそうだ。
PyCharmとの連携
PyCharm(2019.03)なら、pyproject.toml
を認識して、仮想環境を検出してくれた。
Vitual Studio Codeとの連携
Visual Studio Codeなら、自動では認識してくれない。
手間だが、次のどちらかの作業が必要になる。
- 仮想環境を保存しているパスを
settings.json
に指定する - 自動で認識してくれる
.venv
フォルダにpoetryの仮想環境を作る(※個人的にはこちらのほうが好き)
settings.json
に設定を行う場合
これはMacでの例。
{
"python.venvPath": "~/Library/Caches/pypoetry/virtualenvs"
}
.venv
フォルダに仮想環境を作る場合
# 一度作っていたPython環境を削除
$ poetry env list
$ poetry env remove <環境名>
# .venvに保存するように、設定値変更 --> poetry.tomlに出力される。
$ poetry config virutalenv.local true --local
# 仮想環境作成 --> .venvフォルダに出力される。
$ poetry install
その後Visual Studio CodeのPython Interpreter設定を読み込み直して見ると、.venv
フォルダを選択できるようになっている。