0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pyenv install x.x.xがエラー終了...原因は最近必須になったあのモジュールに有った

Posted at

Pythonのバージョン切り分けにpyenvを愛用しています.加えてrbenv,goenv,nodenvも愛用しています.今後も**envの利用が増加する可能性も有りそうです.そこでanyenv繋がりで全ての**envを管理出来る様にするための作業をしました.pyenvを除いて全て上手く再構築出来ました.ところが,pyenvだけ上手く復活しません.pyenv install 3.10.7と実行しようものなら,怒濤のエラー...:scream: :scream_cat: 仕方が無いので,最新バージョンのPython環境の構築には対応していないHomebrew版のpyenvを再度インストールするも,こちらも正常に動作せず,同様のエラー終了に...:scream: :scream_cat: 万事休すかに思われたのですが,原因を探ってみると意外な事実が判明しました.この記事はその記録です.

分かった事実: Python3.10.xからOpenSSL1.1.1が必須に

以下の記事で言及が有りますが,どうやらPython3.10.xからOpenSSL1.1.1が必須になりました.これよりも古いバージョンのOpenSSLがインストールされている場合にはbuild出来ない様です.pyenvではPythonをソースコードからbuildして環境構築を実行します.これは関連が有りそうな予感

エラーログを辿ると

エラーログはここに格納されているよといったメッセージがbuildのエラー終了時に出力されるので,エラーログを探ってみることに.OpenSSLで検索したところ,以下の内容がヒット...

 1495 Could not build the ssl module! 
 1496 Python requires a OpenSSL 1.1.1 or newer

.bash_profileを確認

筆者の環境ではOpenSSLは最新版がインストール済のため,Pathが登録されていないのではないかと疑い,.bash_profileを確認してみました.以下の様にOpenSSL 3について既に環境情報が登録されていました.

PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"
LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib $LDFLAGS"
CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include $CPPFLAGS"
PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig $PKG_CONFIG_PATH"

OpenSSL 1.1に関する環境情報を追加

OpenSSL 3ということはOpenSSl 1.1.1 or newerという条件を満たしていそうですが,エラーになってしまうので,OpenSSL 1.1についても情報を追記しました.この後,pyenv install 3.10.7を実行したところ,問題無く動作しました.根本原因は分からず終いとなりましたが,pyenvはこれで動作する様になりました.ひょっとするとOpenSSL 3ではバージョンが新しすぎるのかもしれません.

PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"
LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib $LDFLAGS"
CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include $CPPFLAGS"
PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig $PKG_CONFIG_PATH"
PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"
LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib $LDFLAGS"
CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include $CPPFLAGS"
PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig $PKG_CONFIG_PATH"

まとめ

OSSではよく有ることですが,トラブルシューティングのメモは忘れた頃に再発するトラブル解決のため,今後も積極的に残していこうと思います.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?