본문 바로가기

Backend/python

[pip] [certificate_verify_failed] certificate verify failed unable to get local issuer certificate 오류 해결 방법

728x90

python

python 기반의 서브 프로젝트에서 py-hanspell 패키지를 이용해야 일이 생겨서 pypi로 설치했다.

pip install py-hanspell

 

설치 중에 아래와 같은 오류가 발생하고 정상적으로 설치가 되지 않았다.

(python) ➜  PycharmProjects pip install py-hanspell
Collecting py-hanspell
  Using cached py-hanspell-1.1.tar.gz (3.0 kB)
    ERROR: Command errored out with exit status 1:
     command: /Users/a60080341/PycharmProjects/korean-nlp-preprocess-api-server/python/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_eb168d17fe974b978d9e186d01543087/setup.py'"'"'; __file__='"'"'/private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_eb168d17fe974b978d9e186d01543087/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-pip-egg-info-l6cmykjy
         cwd: /private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_eb168d17fe974b978d9e186d01543087/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_eb168d17fe974b978d9e186d01543087/setup.py", line 2, in <module>
        from pip.req import parse_requirements
    ModuleNotFoundError: No module named 'pip.req'
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/24/81/baac88868b58eea5b0aab675da7ef0cdd72bee62b080cd50336a76faf57f/py-hanspell-1.1.tar.gz#sha256=e44953f3defb058eabe2e6b4e83a6219c3501de18385ee8c5bfa064b63005e05 (from https://pypi.org/simple/py-hanspell/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  Using cached py-hanspell-1.0.tar.gz (3.0 kB)
    ERROR: Command errored out with exit status 1:
     command: /Users/a60080341/PycharmProjects/korean-nlp-preprocess-api-server/python/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_53322dd4de5a4cd88b64e112eaaab070/setup.py'"'"'; __file__='"'"'/private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_53322dd4de5a4cd88b64e112eaaab070/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-pip-egg-info-vgghiwrk
         cwd: /private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_53322dd4de5a4cd88b64e112eaaab070/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/lk/qzkmzqf94bq57f5bd19tqqgr0000gn/T/pip-install-xmefyhf8/py-hanspell_53322dd4de5a4cd88b64e112eaaab070/setup.py", line 2, in <module>
        from pip.req import parse_requirements
    ModuleNotFoundError: No module named 'pip.req'
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/be/4d/bf6a3b891f30fceacce5a83a987a294317ec41ab899b4b5a2b404a0f88d5/py-hanspell-1.0.tar.gz#sha256=e1468423c130f4fbc99de1909dc0509412792ec19c3fbed949f9778170161cf5 (from https://pypi.org/simple/py-hanspell/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement py-hanspell (from versions: 1.0, 1.1)
ERROR: No matching distribution found for py-hanspell

 

🙀🙀🙀🙀

처음에는 'Could not find a version that satisfies the requirement py-hanspell' 구문을 보고 py-hanspell이 지원하지 않는 파이썬 버전이었기 때문에 오류가 발생했다고 판단했다.

패키지 분석해서 3.9 호환으로 변경해서 PR 올리면 나도 contributor가 되는 건가 싶었다.

하지만 패키지를 분석하다보니 문제는 파이썬 버전이 아니었다.

 

repository를 fork 하고 로컬에서 package 버전을 3.9 호환으로 변경해서 설치했다.

그런데도 오류가 발생했다. 이번에는 조금 다른 상세한 오류가 발생했다.

[certificate_verify_failed] certificate verify failed unable to get local issuer certificate

 

원인

구글링 해보니까 https 페이지에 접근할 때 발생하는 오류라고 한다.

pypi 패키지 공간도 https로 시작해서 그곳에 패키지를 받기 위해 접근할 때 문제가 발생한 것이었다.

https를 이용할 ssl 인증서가 없어서 발생한 오류 같다.

 

해결방법(mac os)

파이썬 설치 공간에 Install Certificates.command 파일을 실행하면 된다.

/Applications/Python\ 3.9/Install\ Certificates.command

이후에 실행하면 깔끔하게 해결된다

👍👍👍👍👍👍👍👍

 

+ 문제 해결과 동시에 작은 기여자 기회도 사라졌다.

+ 해당 문제는 pip 뿐만 아니라 https 접근이 있다면 모두 발생할 수 있다.😉😉

 

출처

https://github.com/ssut/py-hanspell

https://stackoverflow.com/questions/52805115/certificate-verify-failed-unable-to-get-local-issuer-certificate