この記事について
pyenvでPythonのバージョンを切り替える方法
上記の記事に従って使っているpythonのバージョンを変えようとしたところ、以下のエラーが発生してpythonのバージョン変更に失敗した。
以下のコマンドを使用してpythonのバージョンを変更しようとしたところ
shell
$ brew install pyenv
$ pyenv install 3.11.5
$ pyenv global 3.11.5
以下のエラーが発生。
shell
Warning: pyenv 2.4.19 is already installed and up-to-date.
To reinstall 2.4.19, run:
brew reinstall pyenv
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.11.5.tar.xz...
-> https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tar.xz
Installing Python-3.11.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/sophytoeat/.pyenv/versions/3.11.5/lib/python3.11/ssl.py", line 100, in <module>
import _ssl # if we can't import it, let the error propagate
^^^^^^^^^^^
ModuleNotFoundError: No module named '_ssl'
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems
BUILD FAILED (OS X 15.1.1 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/3w/rh7h79ds2nd0shgy5dj8_4_m0000gn/T/python-build.20241202200149.10143
Results logged to /var/folders/3w/rh7h79ds2nd0shgy5dj8_4_m0000gn/T/python-build.20241202200149.10143.log
Last 10 log lines:
DYLD_LIBRARY_PATH=/var/folders/3w/rh7h79ds2nd0shgy5dj8_4_m0000gn/T/python-build.20241202200149.10143/Python-3.11.5 ./python.exe -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Looking in links: /var/folders/3w/rh7h79ds2nd0shgy5dj8_4_m0000gn/T/tmp9fvly540
Processing /private/var/folders/3w/rh7h79ds2nd0shgy5dj8_4_m0000gn/T/tmp9fvly540/setuptools-65.5.0-py3-none-any.whl
Processing /private/var/folders/3w/rh7h79ds2nd0shgy5dj8_4_m0000gn/T/tmp9fvly540/pip-23.2.1-py3-none-any.whl
Installing collected packages: setuptools, pip
WARNING: The scripts pip3 and pip3.11 are installed in '/Users/sophytoeat/.pyenv/versions/3.11.5/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-23.2.1 setuptools-65.5.0
pyenv: version `3.11.5' not installed
opensslはbrewで入れたはずなのだが・・・
エラーをchatGPTに入力してみた。
(以下chatGPTの出力)
エラーの意味
- readlineモジュールが見つからない
• ModuleNotFoundError: No module named 'readline'
• Pythonのインタラクティブシェルで使われるreadline拡張がコンパイルされていないことを示しています。
• 原因は、GNU Readlineライブラリがシステムに存在しない、またはpyenvがそれを正しく検出できないことです。 - _sslモジュールが見つからない
• ModuleNotFoundError: No module named '_ssl'
• PythonのSSL/TLS機能を提供する_sslモジュールがコンパイルされていないことを示しています。
• 原因は、OpenSSLライブラリがシステムに存在しない、またはpyenvがそれを正しく検出できないことです。
解決方法
1. 環境変数 PATH の確認と設定
pyenv をインストールする際に使われるパスが、システム環境変数 PATH に含まれていないため、以下のように設定を確認してください。
現在の PATH を確認
shell
$ echo $PATH
pyenv のパスを追加:
~/.zshrc または ~/.bashrc に以下を追加します:
shell
$ export PATH="$HOME/.pyenv/bin:$HOME/.pyenv/versions/3.11.5/bin:$PATH"
$ eval "$(pyenv init --path)"
変更を反映するためにターミナルを再読み込み:
shell
$ source ~/.zshrc
2. Python 3.11.5 を再インストール:
shell
$ pyenv uninstall 3.11.5
$ pyenv install 3.11.5
インストール後、pyenv global を使用してバージョンを設定:
shell
$ pyenv global 3.11.5
(以上chatGPTの出力)
上記のコマンドを入れたらpythonの別バージョンインストールに成功
shell
pyenv: version `3.11.5' not installed
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.11.5.tar.xz...
-> https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tar.xz
Installing Python-3.11.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.11.5 to /Users/sophytoeat/.pyenv/versions/3.11.5
バージョンを変更。
shell
$ pyenv global 3.11.5
pythonコマンドで確認
shell
Python 3.11.5 (main, Dec 2 2024, 20:06:18) [Clang 16.0.0 (clang-1600.0.26.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
pythonのバージョン変更に成功。