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 update
Poetry のバージョン 1.0.0
未満の頃は self:update
というサブコマンドでしたが、変更されたようです。
万が一うまく行かない場合は公式の手順に従っていったんアンインストールしてからインストールし直すと解決する可能性があります。
Docker コンテナでインストールしたい
→ 単純に公式の手順に従ってインストールします。
公式の python:3.8
イメージの上にインストールする場合のサンプルは次のとおりです。
Dockerfile
:
どんなサブコマンドがあるのか忘れた
→ サブコマンド無しで単に poetry
と打つか help
サブコマンドを使用します。
poetry
poetry 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 集でした。