Używam Python 2.7.3 i żądań. Zainstalowałem żądania przez pip. Wierzę, że to najnowsza wersja. Korzystam z Debian Wheezy.
W przeszłości używałem Żądań wiele razy i nigdy nie miałem do czynienia z tym problemem, ale wydaje się, że przy składaniu żądań https Requests
dostaję InsecurePlatform
wyjątek.
Błąd wspomina urllib3
, ale nie mam tego zainstalowanego. Zainstalowałem go, aby sprawdzić, czy to rozwiązało błąd, ale tak się nie stało.
/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.
Wszelkie pomysły, dlaczego to dostaję? Sprawdziłem dokumenty, jak określono w komunikacie o błędzie, ale dokumenty mówią, aby zaimportować urllib3 i albo wyłączyć ostrzeżenie, albo dostarczyć certyfikat.
źródło
sudo apt-get install python-dev libffi-dev libssl-dev
pip install 'requests[security]'
Żądania 2.6 wprowadziły to ostrzeżenie dla użytkowników Pythona przed wersją 2.7.9 z dostępnymi tylko zapasowymi modułami SSL.
Zakładając, że nie możesz zaktualizować do nowszej wersji Pythona, spowoduje to zainstalowanie więcej aktualnych bibliotek SSL Pythona:
JEDNAK może to zawieść w niektórych systemach bez zależności kompilacji dla pyOpenSSL. W systemach Debian uruchomienie tego polecenia przed poleceniem pip powyżej powinno wystarczyć do zbudowania pyOpenSSL:
źródło
Nie używam tego w produkcji, tylko niektórzy testerzy. I aby powtórzyć dokumentację urllib3
Edycja / aktualizacja:
Powinny również działać:
źródło
Jeśli nie możesz zaktualizować wersji Pythona do wersji 2.7.9 i chcesz ukryć ostrzeżenia,
możesz obniżyć wersję „żądań” do 2.5.3:
Informacje o wersji: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
źródło
W rzeczywistości możesz tego spróbować.
requests.post("https://www.google.com", verify=False)
możesz przeczytać kod żądań.
"C:\Python27\Lib\site-packages\requests\sessions.py"
źródło
Wszystkie podane tutaj rozwiązania nie pomogły (jestem ograniczony do Pythona 2.6.6). Znalazłem odpowiedź w prostym przełączniku na pip:
Mówi to pipowi, że można pobrać moduł z pypi.python.org.
Dla mnie problemem jest serwer proxy mojej firmy za zaporą ogniową, który sprawia, że wygląda na złośliwego klienta dla niektórych serwerów. Brawo ochrona.
Aktualizacja: Zobacz @Alex jest odpowiedzią na zmiany w domenach PyPI oraz dodatkowych
--trusted-host
opcji, które mogą być dodawane. (Skopiowałem / wkleję tutaj, ale jego odpowiedź, więc daj mu +1)źródło
Ta odpowiedź nie ma związku, ale jeśli chcesz pozbyć się ostrzeżenia i otrzymać następujące ostrzeżenie z żądań:
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.
Możesz go wyłączyć , dodając następujący wiersz do kodu Pythona:
requests.packages.urllib3.disable_warnings()
źródło
bash
Najpierw musiałem iść do (z ZSH). Następnienaprawiono problem.
źródło
Stało się dla mnie na Ubuntu 14.04 (z Python 2.7.6) w zeszłym tygodniu po Zrobiłem
apt-get dist-upgrade
że zawartelibssl1.1:amd64
zdeb.sury.org
.Ponieważ uciekam
certbot-auto renew
od zadania crona, używam również--no-self-upgrade
do ograniczenia nieplanowanej konserwacji. To wydaje się być źródłem problemów.Aby naprawić ten błąd, wszystko co potrzebne do zrobienia było roota (z
su
„s--login
switch) i niechcertbot-auto
sam się zaktualizować. To znaczy:zamiast tego, co zwykle uruchamia się z crontab roota:
Następnie odnowienia letsencrypt ponownie przebiegały normalnie.
źródło
Dla mnie bez pracy potrzebuję aktualizacji pip ....
Debian / Ubuntu
zainstalować zależności
uaktualnij pip i zainstaluj pakiety
Jeśli chcesz usunąć zależności
źródło
Właśnie miałem podobny problem na serwerze CentOS 5, na którym zainstalowałem Python 2.7.12 w / usr / local na znacznie starszej wersji python2.7. Aktualizacja do CentOS 6 lub 7 nie jest obecnie opcją na tym serwerze.
Niektóre moduły Pythona 2.7 nadal istniały w starszej wersji Pythona, ale pip nie zaktualizował się, ponieważ nowszy pakiet kryptograficzny nie jest obsługiwany przez pakiety CentOS 5.
W szczególności „żądania instalacji pipem [bezpieczeństwo]” zawiodły, ponieważ wersja openssl na CentOS 5 miała 0.9.8e, która nie jest już obsługiwana przez kryptografię> 1.4.0.
Aby rozwiązać oryginalny problem PO:
Zainstalowana kryptografia 1.3.4, która działa z openssl-0.9.8e. cryptograpy 1.3.4 jest również wystarczające, aby spełnić wymaganie dla następującego polecenia.
To polecenie jest teraz instalowane, ponieważ nie próbuje zainstalować kryptografii> 1.4.0.
Pamiętaj, że w Centos 5 musiałem również:
Aby umożliwić tworzenie kryptografii
źródło
Oto jak działa dla mnie w Pythonie 3.6:
źródło
Nie instaluj pyOpenSSL, ponieważ wkrótce będzie przestarzałe. Obecne najlepsze podejście to
źródło
jeśli chcesz po prostu zatrzymać niepewne ostrzeżenie, takie jak:
robić:
jest kluczem, następujące nie są w tym dobre:
lub
ale musisz wiedzieć, że może to powodować potencjalne zagrożenia bezpieczeństwa .
źródło
Miałem ten sam problem z
Mac
Pycharm Community Edition 2019.3
interpreter Pythona 3.6.
Uaktualnienie pipa do wersji 20.0.2 działało dla mnie.
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package
źródło