Poetryの使い方

koromaru
·

Pythonのパッケージマネージャーの一つである"Poetry"についての備忘録

前まではpipを使っていましたが、管理の方法があまりスマートではないと感じたためPoetryを使うことに。

こーしきどきゅめんと

install

  • `brew install poetry`

    HomeBrewでPoetryをインストール

  • `poetry completions zsh > ~/.zfunc/_poetry`

    Poetryの自動補完を追加

    ./zfuncがないなら、`mkdir ~/.zfunc`で新規作成

    • ~/.zshrcに以下を追加

    fpath+=~/.zfunc

    autoload -Uz compinit && compinit

パッケージ関連

  • `poetry new <project-name>`

    project-nameという名前の、色々入ったdirectoryを作る。

    cargoのnewと近い

    ディレクトリ構造

    project-name

    ├── README.md

    ├── project-name

    │   └── __init__.py

    ├── pyproject.toml

    └── tests

    └── __init__.py

    • `poetry new<project-name> --src `

      srcフォルダを使いたい場合

    • `poetry new <folder-name> --name <project-name> `

      フォルダとパッケージの名前を分けたい時。

  • `poetry init`

    既存にあるプロジェクトに適応させる。

  • `poetry install`

    仮想環境を作成し、poetry.lockに書いてあるパッケージをインストール。

    poetry.lockがなければ、pyproject.tomlを参照する。

    --no-dev で、dev用のパッケージを抜いてインストール

  • `poetry add <package-name>`

    仮想環境を作成し、パッケージを追加。

    • --dev オプションで、dev用のパッケージと明示できる。

    pyproject.tomlの[tool.poetry.group.dev.dependencies]下に追記される

    • <package-name>@~ か @^ か ==○.○.○でバージョンを指定可能

      • ^2.1

        • 2.1.0 以上 3.0.0 未満のバージョン (>=2.1.0, <3.0.0)

      • ~2.05

        • 2.0.5 以上 2.1.0 未満のバージョン (>=2.0.5, <2.1.0)

  • `poetry remove <pkg-name>`

    パッケージを削除。その際は依存関係も削除される


その他コマンド

公式ドキュメントを読もう。

  • `poetry show`

    依存関係全部見る

    `poetry show <pkg-name>`で、そのパッケージの依存関係を見れる

  • `poetry cache list`

    cacheのリストを見る。clearコマンドもある。自分で調べよう

  • `poetry env list`

    仮想環境一覧を表示

  • `poetry update --dry-run`

    アップグレードされるパッケージがわかる

  • `poetry update`

    全てのパッケージをアップグレード

    poetry.lockが変更され、pyproject.tomlはそのまま

    いくつかのパッケージだけupdateしたい場合は、

    `poetry update requests toml`と、列挙する

  • 仮想環境でpythonのプログラムを実行するには

    • `poetry run python <python-file>`

    あるいは

    • `poetry shell python <python-file>`

    前者は実行のたびに仮想環境に入り、終わったら元の世界に戻ってくるという実行方法。後者は一旦仮想世界に入って、行きっぱなしのまま実行するという方法。

    `poetry shell` の方は、いつもの`source .venv/bin/activate` でも可

  • `poetry build`

    ビルドができるらしい。ライブラリ公開する時にやるやつ


便利設定

  • `poetry config --list`

    設定一覧を表示

  • `poetry config virtualenvs.in-project true`

    .venvフォルダを`{cache-dir}/virtualenvs`ではなく、プロジェクトの中に作る

    --localをつければ`poetry.toml`に記述され、その設定自体をgitなどで管理できる

requirements.txtにバージョンを書き出す

Dockerでinstallするためのやつ

`poetry export --without-hashes --output requirements.txt`

  • --without-hashes

    poetry.lockに含まれるバージョンの固有のハッシュを含めない

  • --output

    どのファイルに書き出すかを設定

    わざわざ >> を使わなくても大丈夫

  • --dev

    dev用のパッケージもインストールする

    使うとしたら本番環境用にrequirements.txtを使用するため、これはなし