4
9

More than 3 years have passed since last update.

Poetryで、サクッとPython開発環境を手に入れる

Posted at

背景

昨年末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/

pyproject.tml
[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のようなこともできるようだ。

pyproject.tml
[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なら、自動では認識してくれない。

手間だが、次のどちらかの作業が必要になる。
1. 仮想環境を保存しているパスをsettings.jsonに指定する
2. 自動で認識してくれる.venvフォルダにpoetryの仮想環境を作る(※個人的にはこちらのほうが好き)

settings.jsonに設定を行う場合

これはMacでの例。

settings.json
{
    "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フォルダを選択できるようになっている。

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9