THUMBS SHIFT→

このブログは主に親指シフトを用いて書かれています

poetryこと始め

pipenv はもはや死んだ*1ので、poetry使っていきます。

インストール

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python です。

RuntimeWarningが出る場合

/root/.poetry/lib/poetry/_vendor/py2.7/subprocess32.py:149: RuntimeWarning: The _posixsubprocess module is not being used. Child process reliability may suffer if your program uses threads.  "program uses threads.", RuntimeWarning)

みたいなワーニングが出る場合があります。僕の環境*2では出ました。このまま使っても問題ないらしいので気にならない人は飛ばしてください。

これを消すには、

curl -O https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
python get-poetry.py --uninstall
python3 get-poetry.py
vim $HOME/.poetry/bin/poetry

として、 #!/usr/bin/env python#!/usr/bin/env python3に書き換えます。これで僕は直りました。ソース

使い方

基本的にはnpm(yarn)と同じです。 pyproject.tomlpackage.jsonの役割を果たします。

一応説明しとくと、pyprojectにはインストールしたパッケージや、設定、独自コマンドなどを書くことができ、これがないと何もできません。

最初にやること

poetry init

で対話的にpyprojectを作ってくれます。Enter連打で最小設定のができます。もしくは-n (--no-interaction)オプションをつけても同じことになります。

パッケージのインストール

poetry add <pkg> -Dオプションでdevに追加されます。

環境構築

poetry install

これでpyprojectにあるパッケージを全部インストールしてくれます。 --no-devでdevは無視してくれます。

ちなみに、poetry.lockがあれば、完全に同じ環境を構築してくれます。pyprojectのみある場合は、インストールした後、poetry.lockを作ってくれます。poetry.lockはコミットすることが推奨されています。

仮想環境関連

環境の情報を表示したい時

> poetry env info

Virtual environment
Python:         3.7.1
Implementation: CPython
Path:           /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid:          True

System
Platform: darwin
OS:       posix
Python:   /path/to/main/python

--pathオプションで、仮想環境のパスだけ表示できます。

環境を消したい時は poetry env remove /full/path/to/python です。

VSCodeに環境が認識されない

こういう時は、 poetry env remove /full/path/to/python で環境を消して、 poetry config virtualenvs.in-place true --local で環境をルートディレクトリに作るようにして*3poetry install~/.venvに環境が作られるので、VSCodeに認識されるようになります。