Jaybanuan's Blog

どうせまた調べるハメになることをメモしていくブログ

poetry addやinstallがフリーズ

はじめに

フリーズする理由はいろいろあるかもしれないが、今回Keyringへのアクセスでフリーズするという分かりにくい現象に遭遇したので、メモを残す。

環境

$ uname -srvm
Linux 6.8.0-35-generic #35-Ubuntu SMP PREEMPT_DYNAMIC Mon May 20 15:51:52 UTC 2024 x86_64

$ cat /etc/os-release | grep PRETTY_NAME
PRETTY_NAME="Ubuntu 24.04 LTS"

$ python3 --version
Python 3.12.3

$ poetry --version
Poetry (version 1.8.3)

結論

環境変数PYTHON_KEYRING_BACKENDを以下のように引き渡して実行することで解決。

$ PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring poetry add [パッケージ名]

調査メモ

以下を実行したところ、永遠に終了しない。

$ poetry add [パッケージ名]

以下のようにキャッシュを消して再実行したが、永遠に終了しない。

# rm -rf ~/.cache/pypoetry/
$ poetry add [パッケージ名]

そのため、デバッグ情報を出力して再実行。

$ poetry -vvv add [パッケージ名]
(中略)
Checking if keyring is available
[keyring:keyring.backend] Loading KWallet
[keyring:keyring.backend] Loading SecretService
[keyring:keyring.backend] Loading Windows
[keyring:keyring.backend] Loading chainer
[keyring:keyring.backend] Loading libsecret
[keyring:keyring.backend] Loading macOS
Using keyring backend 'SecretService Keyring'

Keying(あるいはその後)の処理でフリーズしているよう。 なので、poetry keyringというキーワードでググると、該当しそうな情報を発見。

github.com

コメントを確認すると、環境変数PYTHON_KEYRING_BACKENDをpoetryに引き渡すことで回避できるとある。 Issueは2020年にオープンされているが、今まで踏まなかったのが謎。