Python 2.7.3 및 요청을 사용하고 있습니다. pip를 통해 요청을 설치했습니다. 최신 버전이라고 생각합니다. 저는 데비안 위지에서 뛰고 있습니다.
과거에 Requests를 여러 번 사용했지만이 문제에 직면하지는 않았지만 https 요청을 할 때 예외 Requests
가 InsecurePlatform
발생 하는 것 같습니다 .
오류가 언급 urllib3
되었지만 설치되어 있지 않습니다. 오류를 해결했는지 확인하기 위해 설치했지만 실패하지 않았습니다.
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and
may cause certain SSL connections to fail. For more information, see
https://urllib3.readthedocs.org/en/latest
/security.html#insecureplatformwarning.
내가 왜 이것을 얻는 지에 대한 아이디어가 있습니까? 오류 메시지에 지정된대로 문서를 확인했지만 문서가 urllib3을 가져오고 경고를 비활성화하거나 인증서를 제공하려고합니다.
답변
다소 숨겨진 보안 기능을 사용하십시오 .
pip install requests[security]
또는
pip install pyOpenSSL ndg-httpsclient pyasn1
두 명령 모두 다음과 같은 추가 패키지를 설치합니다.
- pyOpenSSL
- 암호화
- 이드 나
python-2.7.9 + 에는 필요하지 않습니다 .
경우 pip install
오류와 함께 실패, 당신이 개발 패키지를 필요 여부 확인 libffi
, libssl
및 python
시스템에 설치된 배포판의 패키지 관리자를 사용하여 :
-
데비안 / 우분투 –
python-dev
libffi-dev
libssl-dev
패키지. -
페도라 –
openssl-devel
python-devel
libffi-devel
패키지.
위의 배포 목록이 불완전합니다.
해결 방법 ( @TomDotTom의 원래 답변 참조 ) :
필요한 개발 패키지 중 일부를 설치할 수없는 경우 해당 경고를 비활성화하는 옵션도 있습니다.
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
귀하의 경우 pip
자체하는 것은에 의해 영향을 InsecurePlatformWarning
하고 PyPI에서 아무것도 설치할 수 없습니다, 고정 될 수있다 이 단계별 가이드 를 수동으로 추가 파이썬 패키지를 배포 할 수 있습니다.
답변
요청 2.6은 2.7.9 이전의 파이썬 사용자에게 스톡 SSL 모듈 만 사용 가능하도록이 경고를 도입했습니다.
최신 버전의 파이썬으로 업그레이드 할 수 없다고 가정하면 최신 파이썬 SSL 라이브러리가 더 많이 설치됩니다.
pip install --upgrade ndg-httpsclient
그러나 pyOpenSSL에 대한 빌드 종속성이없는 일부 시스템에서는 실패 할 수 있습니다. 데비안 시스템에서 위의 pip 명령 전에 이것을 실행하면 pyOpenSSL이 빌드하기에 충분해야합니다.
apt-get install python-dev libffi-dev libssl-dev
답변
프로덕션에서는 사용하지 않고 일부 테스트 러너 만 사용합니다. 그리고 urllib3 문서 를 반복하기 위해
당신이하고있는 일을 알고 있고이 경고와 다른 경고를 비활성화하고 싶다면
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
편집 / 업데이트 :
다음도 작동해야합니다.
import logging
import requests
# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)
답변
당신이 경우 업그레이드 할 수 없습니다 2.7.9로 파이썬 버전을, 그리고 억제 경고를 원하는,
‘요청’ 버전을 2.5.3으로 다운 그레이드 할 수 있습니다 .
sudo pip install requests==2.5.3
버전 정보 :
http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
답변
실제로, 당신은 이것을 시도 할 수 있습니다.
requests.post("https://www.google.com", verify=False)
요청 코드를 읽을 수 있습니다.
"C:\Python27\Lib\site-packages\requests\sessions.py"
class Session(SessionRedirectMixin):
......
def request(self, method, url,
params=None,
data=None,
headers=None,
cookies=None,
files=None,
auth=None,
timeout=None,
allow_redirects=True,
proxies=None,
hooks=None,
stream=None,
verify=None, # <========
cert=None):
"""
...
:param verify: (optional) if True, the SSL cert will be verified.
A CA_BUNDLE path can also be provided.
...
"""
답변
여기에 제공된 모든 솔루션이 도움이되지 않았습니다 (파이썬 2.6.6으로 제한되어 있습니다). pip에 전달하는 간단한 스위치에서 답을 찾았습니다.
$ sudo pip install --trusted-host pypi.python.org <module_name>
이것은 pip에게 pypi.python.org에서 모듈을 가져 오는 것이 좋다고 알려줍니다.
나에게있어 문제는 방화벽 뒤에있는 회사의 프록시가 일부 서버에 악의적 인 클라이언트처럼 보이게하는 것입니다. 만세 보안.
업데이트 : PyPi 도메인의 변경 사항과 추가 할 수있는 추가 옵션 은 @Alex 의 답변 을 참조하십시오
--trusted-host
. (여기 복사 / 붙여 넣기를했지만 그의 답변이므로 +1)
답변
이 답변은 관련이 없지만 경고를 없애고 요청에서 경고 를 받으려면 다음을 수행하십시오.
InsecurePlatformWarning
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
파이썬 코드에 다음 줄을 추가하여 비활성화 할 수 있습니다 .
requests.packages.urllib3.disable_warnings()