🐍

Poetryのインストールで詰まった話

2024/06/07に公開

tl;dr

NotOpenSSLWarningがうるさかったのでマニュアルインストールした

環境

MacBook Pro(M3 Pro)
macOS Sonoma 14.3.1

$ which python
python not found

$ which python3
/usr/bin/python3

$ python3 -V
Python 3.9.6

なお、今までPythonとPoetryをそれぞれmiseで入れて使っていたので、/usr/bin/python3はほぼ使っていない。

経緯

Pythonの嫌なところをだいぶ隠してくれる存在、Poetry。
https://python-poetry.org/
いままでmiseのプラグインで入れていたのだが、色々あってプラグインを一旦消してまた入れたところpoetryコマンドがいちいち警告を出すようになってしまった。

$ poetry -V
/Users/taro137/.local/share/mise/installs/poetry/1.8.3/venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
Poetry (version 1.8.3)

mise経由で入れたのがだめなのかと思い公式インストーラで入れようとしたところ、エラーを吐いてインストールに失敗してしまった。この邪魔な警告を受け入れて共に生きていくしかないのだろうか?

ググってみたところ似たようなケースがいくつか見つかった。
https://github.com/explosion/spaCy/discussions/12750
https://stackoverflow.com/questions/76187256/importerror-urllib3-v2-0-only-supports-openssl-1-1-1-currently-the-ssl-modu
https://vikramsamal.medium.com/importerror-urllib3-v2-0-only-supports-openssl-1-1-1-e74510f3a5f8

......が、どれも対処法としてpip install urllib3する方法ばかり紹介している。しかしグローバルのpipで迂闊にpip installするのはどうにも怖い。そこでPoetryのインストール方法のページをよく見ると、マニュアルインストールする方法が書かれている

python3 -m venv $VENV_PATH
$VENV_PATH/bin/pip install -U pip setuptools
$VENV_PATH/bin/pip install poetry

今回は$VENV_PATH~/.poetry_envとしてこれを実行することにした。
動作確認。miseのpoetryを消してから以下を実行した。

$ ~/.poetry_env/bin/poetry -V
/Users/taro137/.poetry_env/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
Poetry (version 1.8.3)

例の警告は出るがpoetry自体は動いている。次にurllib3をインストールする。ここでさっき作ったpoetry用仮想環境のpipを使うのが肝である。

$ ~/.poetry_env/bin/pip3 install urllib3==1.26.15
Collecting urllib3==1.26.15
  Downloading urllib3-1.26.15-py2.py3-none-any.whl.metadata (48 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.1/48.1 kB 2.9 MB/s eta 0:00:00
Downloading urllib3-1.26.15-py2.py3-none-any.whl (140 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.9/140.9 kB 8.5 MB/s eta 0:00:00
Installing collected packages: urllib3
  Attempting uninstall: urllib3
    Found existing installation: urllib3 2.2.1
    Uninstalling urllib3-2.2.1:
      Successfully uninstalled urllib3-2.2.1
Successfully installed urllib3-1.26.15

$ ~/.poetry_env/bin/poetry -V                    
Poetry (version 1.8.3)

警告が消えた!
毎回~/.poetry_env/bin/poetryと打つのは面倒なので

echo "alias poetry='~/.poetry_env/bin/poetry'" >> ~/.zshrc
source ~/.zshrc

として完了。

Discussion