Python再インストール(Mac)

 Python学習中。

ライブラリrequestsをインストール出来ない。

SSLが使えないという内容のエラーが出る。

Pythonの再インストールで解決した。 以下、メモ。


1)環境

macOS: Monterey 12.6.2
Python: 3.10.9 
(brew install pythonでインストールした。 pyenvは使っていなかったのが良くなかったみたい。)


2)エラー内容

ライブラリrequestsをインストールしようとすると次のエラーが発生する。




Could not fetch URL https://pypi.org/simple/requests/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/requests/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping


WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/requests/

WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/requests/

WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/requests/

WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/requests/

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/requests/

ERROR: Could not find a version that satisfies the requirement requests (from versions: none)

ERROR: No matching distribution found for requests

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

WARNING: There was an error checking the latest version of pip.







PythonでSSLをインポートしようとしてもエラーになる。


>>> import ssl

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/usr/local/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/ssl.py", line 99, in <module>

    import _ssl             # if we can't import it, let the error propagate

ImportError: dlopen(/usr/local/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_ssl.cpython-310-darwin.so, 0x0002): Library not loaded: '/usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib'

  Referenced from: '/usr/local/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_ssl.cpython-310-darwin.so'

  Reason: tried: '/usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib' (no such file), '/usr/local/lib/libssl.1.1.dylib' (no such file), '/usr/lib/libssl.1.1.dylib' (no such file)





そういえば、brew install pythonでPythonをインストールした時にもエラーが出ていた。
brew reinstall openssl でopenssl を再インストールし、brew reinstall pythonでこのエラーは出なくなったが、SSL使えない問題は解決しなかった。


Error: An exception occurred within a child process:

  RuntimeError: /usr/local/opt/openssl@1.1 not present or broken

Please reinstall openssl@1.1. Sorry :(





3)Pythonアンインストール

pyenvは使わずに、brew install pythonでインストールしただけだったので、brewでアンインストールした。


 $ brew uninstall python3




pyenvを使ってPython3.10.9をインストールしたが解決せず、これもアンインストールした。
(原因不明。 私が何か間違ったのかも知れない。)


$ pyenv uninstall 3.10.9




$ pyenv global system




4)Pythonインストール(pyenv使用)


pyenvを使ってPython3.9.0をインストールしたら解決した。


$ pyenv install 3.9.0





$ pyenv global 3.9.0





$ curl -kL https://bootstrap.pypa.io/get-pip.py | python3




PyCharmを使っている場合は、Pythonインタープリターの再設定が必要。
(Pythonのバージョンや場所が変わっているので)

5)解決した

PythonでSSLをインポートしても問題なし。


$ python3

Python 3.9.6 (default, Oct 18 2022, 12:41:40) 

[Clang 14.0.0 (clang-1400.0.29.202)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> 

>>> 

>>> 

>>> import ssl

>>> ssl

<module 'ssl' from '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/ssl.py'>

>>> 





requestsのインストールも問題なし。




Comments

Popular Posts