[python] poetry에서 ssl 에러 발생할 때

항상 정리하기·2022년 10월 3일
0

pip install할 때 ssl 에러가 발생하면 아래와 같이 --trusted-host 옵션을 추가해서 해결 가능한데,

pip --trusted-host pypi.org --trusted-host files.pythonhosted.org install [패키지명]

poetry에서는 옵션을 추가해서 ssl 에러를 넘어갈 방법이 없다.

poetry는 아래와 같은 방법으로 가능하다.

우선 pip --version을 실행해서 패키지 설치 경로를 확인 후

[패키지 설치 경로]/pip/_vendor/requests/sessions.py 파일의 아래 코드에서

        #: SSL Verification default.
        #: Defaults to `True`, requiring requests to verify the TLS certificate at the
        #: remote end.
        #: If verify is set to `False`, requests will accept any TLS certificate
        #: presented by the server, and will ignore hostname mismatches and/or
        #: expired certificates, which will make your application vulnerable to
        #: man-in-the-middle (MitM) attacks.
        #: Only set this to `False` for testing.
        self.verify = True

        #: SSL client certificate default, if String, path to ssl client
        #: cert file (.pem). If Tuple, ('cert', 'key') pair.
        self.cert = None

self.verify = TrueFalse로 변경한다.

위 방법으로 해결 안되는 경우 site-packages/requests/adapters.py line 394에 send() 함수가 있는데 아래와 같이 한줄을 추가해준다.

    def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
        """Sends PreparedRequest object. Returns Response object.

        :rtype: requests.Response
        """
        
        verify = False		# ==> 추가

        try:
            conn = self.get_connection(request.url, proxies)
        except LocationValueError as e:
            raise InvalidURL(e, request=request)
profile
늦은 것 같지만 이제부터라도 차근차근 하나씩 정리하기

0개의 댓글