Python のパッケージ管理ツールの Poetry の tips です。
Poetry はアプリケーション開発とパッケージ開発のどちらの用途にも利用できますが、私はアプリケーション開発でしか Poetry を使ったことがありません。そのため、以下にあげる tips はすべてアプリケーション開発に Poetry を利用するときの tips です。
本記事では Poetry のバージョン 1.0.0 を対象としています。 Poetry は仕様が比較的安定していますが、バージョンが上がると参考にならない場合もあるのでご注意ください。
目次
- venv のファイルをプロジェクトディレクトリの下に置きたい
- venv を作らずグローバルにパッケージをインストールしたい
- アップデート可能なパッケージをチェックしたい
- Poetry 自体をアップデートしたい
- Docker コンテナでインストールしたい
- どんなサブコマンドがあるのか忘れた
- サブコマンドのオプションにどんなものがあるか忘れた
- サブコマンドをタブ補完してほしい
venv のファイルをプロジェクトディレクトリの下に置きたい
→ 設定値 virtualenvs.in-project の値を true に変更します。
すべてのプロジェクトに適用する場合は次のとおりにします。
poetry config virtualenvs.in-project trueカレントプロジェクトにのみ適用する場合は --local オプションを付けます。
poetry config --local virtualenvs.in-project true設定した値を初期状態にリセットしたいときは poetry config コマンドの --unset オプションを利用します。
グローバルな設定を削除:
poetry config --unset virtualenvs.in-projectプロジェクトローカルな設定を削除:
poetry config --local --unset virtualenvs.in-projectちなみに、デフォルトでは Poetry は venv のファイルをホームディレクトリ以下の特定のディレクトリに集約して置くようになっています(私の手元の macOS 上で確認すると /Users/USERNAME/Library/Caches/pypoetry/virtualenvs でした)。
参考:
virtualenvs.in-project: booleanCreate the virtualenv inside the project's root directory. Defaults to
false.
venv を作らずグローバルにパッケージをインストールしたい
→ 設定値 virtualenvs.create の値を false にします。
poetry config virtualenvs.create falseこの設定が有用な場面はかぎられますが、このオプションの存在を覚えておくといざというときに便利です。
参考:
virtualenvs.create: booleanCreate a new virtual environment if one doesn't already exist. Defaults to
true.
アップデート可能なパッケージをチェックしたい
→ poetry show コマンドの --outdated オプションを使用します。
poetry show --outdated実際のアップデート処理を仮実行して確認したい場合は poetry update コマンドの --dry-run オプションが使えます。
poetry update --dry-run参考:
-
show | Commands | Documentation | Poetry - Python dependency management and packaging made easy.
-
update | Commands | Documentation | Poetry - Python dependency management and packaging made easy.
Poetry 自体をアップデートしたい
→ poetry self update サブコマンドを使用します。
poetry self updatePoetry のバージョン 1.0.0 未満の頃は self:update というサブコマンドでしたが、変更されたようです。
万が一うまく行かない場合は公式の手順に従っていったんアンインストールしてからインストールし直すと解決する可能性があります。
Docker コンテナでインストールしたい
→ 単純に公式の手順に従ってインストールします。
公式の python:3.8 イメージの上にインストールする場合のサンプルは次のとおりです。
Dockerfile:
どんなサブコマンドがあるのか忘れた
→ サブコマンド無しで単に poetry と打つか help サブコマンドを使用します。
poetrypoetry helpサブコマンドのオプションにどんなものがあるか忘れた
→ poetry help コマンドにサブコマンド名を引数として渡します。
poetry help self次のような内容が見やすい色付きで出力されます。
USAGE
poetry self
or: poetry self update [--preview] [
<version>]
COMMANDS
update
Updates Poetry to the latest version.
<version> The version to update to.
--preview Install prereleases.
GLOBAL OPTIONS
-h (--help) Display this help message
-q (--quiet) Do not output any message
-v (--verbose) Increase the verbosity of messages: "-v" for normal output, "-vv" for more verbose output and "-vvv" for debug
-V (--version) Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n (--no-interaction) Do not ask any interactive question
</version></version>
これを読んでもわからないことがあれば公式のドキュメントを読みます:
サブコマンドをタブ補完してほしい
→ poetry completions コマンドの出力を起動時のスクリプトに追加します。
公式で紹介されている macOS + Homebrew を使用している場合のサンプルは次のとおりです。
# Bash (macOS/Homebrew)
poetry completions bash > $(brew --prefix)/etc/bash_completion.d/poetry.bash-completion参考:
古い設定値を削除したい
→ Poetry のバージョンアップによって使われなくなった設定値を削除するには、設定値が格納されたファイルを直接編集して該当行を削除します。これは poetry config --unset が効かない場合のみ使用します。
私が確認した環境( macOS / CentOS 7 )ではそのファイルは ~/.config/pypoetry/config.toml にありました。拡張子が示すとおり中身は TOML フォーマットです。
vi ~/.config/pypoetry/config.toml以上 Poetry の tips 集でした。