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.toml
がpackage.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
で環境をルートディレクトリに作るようにして*3、
poetry install
で~/.venv
に環境が作られるので、VSCodeに認識されるようになります。