728x90
반응형
들어가며
파이썬 에러 파헤치기입니다.
윈도우10 환경에서 잘 되던 코드인데, 동일한 코드를 Mac OS 에서 실행 할려고 하니, 아래와 같은 처음 보는 에러가 발생하였습니다.
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)
traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/websockets/legacy/client.py", line 649, in __await_impl_timeout__
return await asyncio.wait_for(self.__await_impl__(), self.open_timeout)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/tasks.py", line 483, in wait_for
return fut.result()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/websockets/legacy/client.py", line 653, in __await_impl__
transport, protocol = await self._create_connection()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py", line 1050, in create_connection
transport, protocol = await self._create_connection_transport(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py", line 1080, in _create_connection_transport
await waiter
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/sslproto.py", line 529, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/sslproto.py", line 189, in feed_ssldata
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 944, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)
원인
인터넷 연결이 필요하여, Web Sockect 으로 크롤링 하는 동작 부분에서 HTTPS 가 정상적으로 지원하지 않아서 발생하는 현상으로 파악됩니다.
같은 네트워크 기반에서도 OS 환경에 따라서 에러 발생이 달라지는걸로 봐서는 코드나 네트워크 환경에 대한 문제가 아니라 개발 환경 의 문제입니다.
해결 방안
1) pip install --upgrade certifi
certifi 패키지를 업그레이드 하는 방법입니다.
bash-3.2$ pip install --upgrade certifi
Requirement already up-to-date: certifi in
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (2021.10.8)
WARNING: You are using pip version 20.2.2; however, version 21.3.1 is available.
You should consider upgrading via the
'/Library/Frameworks/Python.framework/Versions/3.8/bin/python3 -m
pip install --upgrade pip' command.
이미 certifi 패키지는 최신으로 되어있으나, pip 자체를 업그레이드 하라고 하네요
2) pip install --upgrade pip
pip 자체를 업그레이드 해봅니다.
bash-3.2$ pip install --upgrade pip
Collecting pip
Downloading pip-21.3.1-py3-none-any.whl (1.7 MB)
|████████████████████████████████| 1.7 MB 5.0 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.2.2
Uninstalling pip-20.2.2:
Successfully uninstalled pip-20.2.2
Successfully installed pip-21.3.1
여기까지 해도 해결은 되지 않았습니다.
3) Install certificates.command
파이썬 설치 경로에서 Install Certificates.command 파일을 찾아서 실행해 줍니다.
간단하게 Command + Space 로 Install Certificates.command 를 찾고, 이를 더블클릭으로 실행해주면 됩니다.
이제 더이상 Mac OS 에서 ssl.SSLCertVerificationError 가 뜨지 않음을 확인 할 수 있습니다.
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)
728x90
반응형
'IT > Python' 카테고리의 다른 글
Python - asyncio 비동기 함수 코루틴에 대해서 알아보기 (5) | 2021.11.11 |
---|---|
Python Error - ValueError: invalid literal for int() with base 10: (9) | 2021.10.21 |
Python Error - Failed to establish a new connection: [WinError 10061] (3) | 2021.10.10 |
Python Error - UnicodeDecodeError : 'utf8' codec can't decode byte 0xeb in position 0 (16) | 2021.10.07 |
파이썬 크롤링 - 크롬화면 띄우지 않기 (10) | 2021.10.04 |
댓글