poetry導入
パッケージ管理は当たり前のようにpipを使っていたけど、poetry使えばpip install
とかいらなくなるみたいなので、入れてみる。
導入
sudo curl -sSL https://install.python-poetry.org | python3 - poetry completions bash >> ~/.bash_completion poetry config virtualenvs.in-project true
1行目でインストール、2行目はbashの補完を有効に、3行目は自分の好みでvenvをプロジェクトディレクトリ内につくるように設定。
poetry new poetry-demo --src
これでこのディレクトリ構成の新しいプロジェクトが出来上がる。フラットレイアウトでいいなら–srcはいらない。なお、既存プロジェクトには poetry init
で導入できるっぽい。
パッケージ入れる
petry add pandas poetry add pytest -G dev
pip installの代わりはこれで。pyproject.tomlに自動追記されるし、なければ勝手に仮想環境も作ってくれる。
-Gは–groupでも。開発用がちゃんと別管理できるのは嬉しい。requirements-devとかもう作らなくていい。
ちなみにdev以外のグループも作れる。例えばドキュメント作成用パッケージとかあったらdocグループで管理、みたいなことも可能。
なおuninstall は poetry remove ~~~
既存pyproject.tomlからインストール
poetry install poetry install --with dev # 多分明示しなくてもあれば勝手に入る
npmみたいな感じ。ちなみにpoetry.lockも勝手に作られるみたい。
ただpoetry.lockが存在するときは poetry install
時はlockを元にinstallするみたい。ここはnpmと違うのか。
ローカルのモジュールをadd
poetry add -e ./my-package/
pip install と同じ。–editableでもOK。poetry1.1まではデフォルトでローカルモジュールはeditableだったようだが、1.2から挙動が変わっているので注意。
仮想環境に入る
poetry shell
で仮想環境のshellを開ける。pipenvがこんな感じだった気がするな。
別に仮想環境に入らなくても poetry run python myscript.py
で仮想環境上で実行できる。pytestも poetry run pytest
で実行可能。
ただなれないのでいつも通り`source .venv/bin/activate`で仮想環境は使うことにしておこうかな。もしかしたらCode Runner周りを整備すればいちいち仮想環境に入らずにこれまでどおりのことができるようになるのかも。
pipyへ登録
poetry build poetry publish
pipyのアカウントが登録されていればこれで公開できるみたい。poetry publish --build
でも可。
プライベートリポジトリでの公開なら poetry publish -r my-repository
その他
設定もろもろ
poetry config --list
python変える
poetry env info # 今の設定見る poetry env list # プロジェクトのpython一覧 poetry env use 3.7 poetry env use /python/path poetry env use system
pipがいらなくなるといっても裏ではvenvとpipで色々やってくれてるだけなので、環境自体が大きく変わるわけではなさそう。
ディスカッション
コメント一覧
まだ、コメントがありません