instalacja pip zakończy się niepowodzeniem z „błędem połączenia: [SSL: CERTIFICATE_VERIFY_FAILED] weryfikacja certyfikatu nie powiodła się (_ssl.c: 598)”

397

Jestem bardzo nowy w Pythonie i staram się > pip install linkcheckerna Windows 7. Kilka notatek:

  • instalacja pip kończy się niepowodzeniem bez względu na pakiet. Na przykład > pip install scrapypowoduje również błąd SSL.
  • Waniliowa instalacja Python 3.4.1 zawiera pip 1.5.6. Pierwszą rzeczą, którą próbowałem zrobić, to zainstalować linkchecker. Python 2.7 został już zainstalowany, przyszedł z ArcGIS. pythoni pipnie były dostępne z wiersza poleceń, dopóki nie zainstalowałem 3.4.1.
  • > pip search linkcheckerPracuje. Być może dzieje się tak, ponieważ wyszukiwanie pip nie weryfikuje certyfikatu SSL witryny.
  • Jestem w sieci firmowej, ale nie przechodzimy przez serwer proxy, aby uzyskać dostęp do Internetu.
  • Każdy komputer firmowy (w tym mój) ma Zaufany główny urząd certyfikacji, który jest wykorzystywany z różnych powodów, w tym umożliwiając monitorowanie ruchu TLS na https://google.com . Nie jestem pewien, czy to ma z tym coś wspólnego.

Oto zawartość mojego pip.log po uruchomieniu pip install linkchecker:

Downloading/unpacking linkchecker
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Getting page https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
  Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
  Cannot fetch index base URL https://pypi.python.org/simple/
  URLs to search for versions for linkchecker:
  * https://pypi.python.org/simple/linkchecker/
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
  Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
Jeremy Cook
źródło
1
Wręcz przeciwnie! Python 3.4.1 i wcześniejsze wersje domyślnie nie sprawdzają poprawności certyfikatów. Jeśli używasz Pythona 3.4.2, pomyślałem, że to jest problem. (Zobacz problem 21013 i ten wątek na liście mailingowej . Zauważ, że to początek dość długiego wątku.) Niestety nie mogłem pomóc!
Cody Piersall
3
Sprawdź, czy skrzypce się otworzyły i zamknij. Fiddler próbuje złamać SSL, a to łamie pip, kiedy zamykam pip działa dla mnie. Kiedy zamykam skrzypka, wszystko jest w porządku
José Barbosa,

Odpowiedzi:

639

-----> pip install gensim config --global http.ssl Zweryfikuj fałsz

Wystarczy zainstalować dowolny pakiet za pomocą instrukcji „config --global http.sslVerify false”

Możesz zignorować błędy SSL, ustawiając pypi.orgi files.pythonhosted.orgjako zaufane hosty.

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>

Uwaga : Czasem w kwietniu 2018 r Index Pakiet Python zostało przeniesione od pypi.python.orgcelu pypi.org. Oznacza to, że polecenia „zaufanego hosta” używającego starej domeny już nie działają.

Permanent Fix

Od czasu wydania pip 10.0 powinieneś być w stanie naprawić to na stałe, poprzez pipsamo uaktualnienie :

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools

Lub po prostu instalując go ponownie, aby uzyskać najnowszą wersję:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(… A następnie działa get-pip.pyz odpowiednim interpreterem języka Python).

pip install <otherpackage>powinien po tym działać. Jeśli nie, musisz zrobić więcej, jak wyjaśniono poniżej.


Możesz dodać zaufane hosty i proxy do pliku konfiguracyjnego .

pip.ini(Windows) lub pip.conf(unix)

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Alternatywne rozwiązania (mniej bezpieczne)

Większość odpowiedzi może stanowić problem bezpieczeństwa.

Dwa obejścia, które pomagają w instalacji większości pakietów Pythona, to:

  • Korzystanie z easy_install : jeśli jesteś naprawdę leniwy i nie chcesz tracić dużo czasu, użyj easy_install <package_name>. Pamiętaj, że niektóre pakiety nie zostaną znalezione lub będą powodować niewielkie błędy.
  • Używanie koła : pobierz koło pakietu pakietu python i użyj polecenia pip, pip install wheel_package_name.whlaby zainstalować pakiet.
Vaulstein
źródło
7
Twoja aktualizacja zaczęła działać. W moim przypadku zapora korporacyjna wstawia się jako zaufany host połączeń SSL. Zakładałem, że konfiguracja serwera proxy była nieprawidłowa, ale dodanie pełnych informacji wskazuje, że problem dotyczy SSL. Zmiana adresu URL indeksu pomijała ten problem.
peater
11
Wspaniale, dzięki! Zaufany host wydaje się wystarczający, tj. pip install --trusted-host pypi.python.org pypi_package. Użycie --verbosepokazuje, że bez --trusted-hosttego połączenie HTTPS nie powiedzie się, podczas gdy próbuje się tego samego połączenia HTTPS (nie HTTP), --trusted-hostale się powiedzie.
Oliver,
12
Czy używanie wersji HTTP (a nawet jej zaufanie) nie stanowi również zagrożenia bezpieczeństwa?
Paŭlo Ebermann
3
możesz tak krótko zignorować parametr --index-url, spróbuj tego polecenia również powinno być w porządku:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu
8
nie działa mi. Uruchamianie mac os high sierra na Macbookpro 15 "Python 2.7 pip 9.0.1 Próbowałem zarówno: sudo -H pip install --trusted-host pypi.python.org numpy i sudo pip install --trusted-host pypi.python.org numpy zawsze daje mi ten sam błąd: „Wystąpił problem z potwierdzeniem certyfikatu ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] Wersja protokołu alertu tlsv1 (_ssl.c: 661) - pomijanie Nie można znaleźć wersji spełniającej wymagania”
DaniPaniz
123

Możesz określić certyfikat za pomocą tego parametru:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

Zobacz: Dokumenty »Poradnik» pip

Jeśli określenie certyfikatu głównego Twojej firmy nie działa, być może ten CURL będzie działał: http://curl.haxx.se/ca/cacert.pem

Musisz użyć pliku PEM, a nie pliku CRT. Jeśli masz plik CRT, musisz go przekonwertować na PEM. W komentarzach znajdują się raporty, że teraz działa on z plikiem CRT, ale nie zweryfikowałem go.

Sprawdź także: Weryfikacja certyfikatu SSL .

Steve Tauber
źródło
1
Curl One jest bezpieczny. Sugerowałbym użycie tego.
Steve Tauber
1
@JeremyCook może to być czas na twoim serwerze, jeśli jest w przeszłości, może to być proces weryfikacji
Giovanni Bitliner
1
Format CRT nie jest obsługiwany, obsługiwany jest tylko format PEM. Musisz przekonwertować CRT do formatu PEM za pomocą openssl. Należy również sprawdzić, czy pobrany pakiet zawiera prawidłowy główny urząd certyfikacji. Szczegóły znajdują się w mojej odpowiedzi: stackoverflow.com/a/28724886/41957 .
chnrxn
1
@JeremyCook, PEM / certyfikaty nie pochodzą bezpośrednio od strony trzeciej, z której je pobrałeś. Zebrali certyfikaty z oryginalnych źródeł. Nie jest możliwe, aby strona trzecia wygenerowała certyfikat innej osoby, chyba że ma właściwy klucz (który będzie miał tylko ktoś inny).
chnrxn
4
@endolith - Patrząc na pip.pypa.io/en/stable/user_guide/#configuration wygląda na to, że możesz albo użyć zmiennych środowiskowych, albo pip.confpliku, aby mieć do nich stałe odwołanie bez podawania polecenia
Cinderhaze
63

Odpowiedź kenorba jest bardzo przydatna (i świetna!).
Spośród jego rozwiązań być może jest to najprostsze: --trusted-host

Na przykład w tym przypadku możesz to zrobić

pip install --trusted-host pypi.python.org linkchecker

Plik pem (lub cokolwiek innego) jest niepotrzebny.

plhn
źródło
Działa to również w przypadku innych poleceń, takich jakpip list --trusted-host pypi.python.org --outdated
Igor,
60

Dla mnie problem został rozwiązany poprzez stworzenie folderu pip, z plikiem: pip.ini w C:\Users\<username>\AppData\Roaming\ np:

C:\Users\<username>\AppData\Roaming\pip\pip.ini

W środku napisałem:

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Zrestartowałem Pythona, a następnie Pip na stałe zaufał tym stronom i użyłem ich do pobrania pakietów.

Jeśli nie możesz znaleźć folderu AppData w systemie Windows, napisz %appdata%w eksploratorze plików i powinien on się pojawić.

użytkownik2673238
źródło
O dziwo, to nie pomaga mojej maszynie Win10: /
mcandre
1
W pracy, środowisko Windows 10, przy użyciu emulatora konsoli Cmder. --trusted-host użyty do rozwiązania problemu „SSLError (SSLCertVerificationError (1,” [SSL: CERTIFICATE_VERIFY_FAILED] weryfikacja nie powiodła się: certyfikat z podpisem własnym w łańcuchu certyfikatów ”. Dziś przestał działać. Umieściłem kopię mojego folderu pip ( wzięte z ../AppData/Local/) w ../AppData/Roaming/ i znów wszystko jest w porządku z moim lokalnym światem python. Dziękuję bardzo!
IdusOrtus
1
Świetny! Dziękuję Ci bardzo. --trusted-host nie działa teraz dla mnie, ale twoje rozwiązanie pomaga.
Alexander Prokofyev
1
Dlaczego nie pobrano tego podczas instalowania Pythona>
98Ed
Niesamowite! Szukałem błędów związanych z GIT, proxy firmy, SSL i to było po prostu pip. Dziękuję i mam nadzieję, że ten komentarz przyniesie tu ludzi zdezorientowanych jak ja.
negas
41

Odpowiedzi są dość podobne i nieco mylące. W moim przypadku problemem były certyfikaty w sieci mojej firmy. Byłem w stanie obejść ten problem, używając:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

Jak widać tutaj . Argument -vvv można pominąć, jeśli pełne dane wyjściowe nie są wymagane

Koji D'infinte
źródło
10
Tylko jeden, aby naprawić mój problem, dzięki.
Gringo Suave
Niesamowite, jedyne, które również dla mnie zadziałało!
ethikz
Działa, ponieważ dziś jestem za jakimś proxy, które usuwa normalne SSL. Zwykle nie muszę określać zaufanych hostów, gdy dorośli korzystają z sieci.
MrChrister,
to też działa dla mnie. powyżej nie działało
Srinath Ganesh
32

Permanent Fix

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

Na przykład:

pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Devesh Sharma
źródło
24

Aby rozwiązać ten problem raz na zawsze, możesz sprawdzić, czy masz pip.confplik.

Oto, gdzie pip.confpowinieneś być, zgodnie z dokumentacją :

W systemie Unix domyślnym plikiem konfiguracyjnym jest: $HOME/.config/pip/pip.confktóry szanuje zmienną środowiskową XDG_CONFIG_HOME.

W systemie macOS plik konfiguracyjny jest, $HOME/Library/Application Support/pip/pip.confjeśli katalog $HOME/Library/Application Support/pipistnieje jeszcze$HOME/.config/pip/pip.conf

W systemie Windows plik konfiguracyjny to %APPDATA%\pip\pip.ini.

Wewnątrz virtualenv:

W systemach Unix i macOS jest to plik $VIRTUAL_ENV/pip.conf

W systemie Windows plik to: %VIRTUAL_ENV%\pip.ini

Twój pip.confpowinien wyglądać następująco:

[global]
trusted-host = pypi.python.org

pip install linkcheckerzainstalowany linkcheckerbez skarg po utworzeniu pip.confpliku.

Alex-Antoine Fortin
źródło
1
$ HOME / Biblioteka / Obsługa aplikacji / pip nie istnieje na moim komputerze, czy istnieje alternatywna lokalizacja?
42shadow42
Wygląda na to, że pipinstrukcja obsługi została zaktualizowana od czasu, gdy opublikowałem tę odpowiedź. Zaktualizowałem swoją odpowiedź dla systemu macOS. Czy to pomaga?
Alex-Antoine Fortin
Nie wpływa na błąd SSL na moim komputerze z Win10: /
mcandre
Nie rozwiązuje problemu w systemie MacOSX.
MoDJ
Jestem na macOS. Jeśli zainstalowałeś Python3 za pomocą, brewupewnij się, że używasz pip3i utwórz pip.confjako $HOME/.config/pip/pip.conf. Pracowałem dla siebie
anu
23

Najprostszym sposobem, jaki znalazłem, jest pobranie i użycie „DigiCert High Assurance EV Root CA” z DigiCert na https://www.digicert.com/digicert-root-certificates.htm#roots

Możesz odwiedzić stronę https://pypi.python.org/, aby zweryfikować wystawcę certyfikatu, klikając ikonę kłódki na pasku adresu lub zwiększyć swój zasób geek za pomocą openssl:

$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

Ostatnia wartość CN w łańcuchu certyfikatów to nazwa urzędu certyfikacji, który należy pobrać.

W celu jednorazowego wysiłku wykonaj następujące czynności:

  1. Pobierz CRT z DigiCert
  2. Konwertuj CRT na format PEM
  3. Wyeksportuj zmienną środowiskową PIP_CERT do ścieżki pliku PEM

(ostatni wiersz zakłada, że ​​używasz powłoki bash) przed uruchomieniem pip.

curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt 
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem

Aby uczynić to wielokrotnego użytku, umieść DigiCertHighAssuranceEVRootCA.crt w popularnym miejscu i wyeksportuj PIP_CERT odpowiednio do ~ / .bashrc.

chnrxn
źródło
4
Wykorzystałeś swoją odpowiedź, aby wyeksportować główny urząd certyfikacji naszej firmy do zmiennej PIP_CERT, a na koniec po wypróbowaniu wszystkiego innego, w tym „pip --cert cert.pem”, twój sposób zadziałał ... po prostu zainstaluj pakiet pip. BIG +1 - tak, mamy firewal / proxy / utm.
Marlon
To wciąż nie powiodło się dla mnie na Mac Mojave. Wykonałem dokładnie 3 kroki i nadal pojawia się komunikat „Błąd: pip jest skonfigurowany z lokalizacjami, które wymagają TLS / SSL, jednak moduł ssl w Pythonie nie jest dostępny”. Próbowałem wszystkich opcji --trusted-host i --cert, a pip nie działa. Próbowałem zaktualizować pip i dostałem błąd SSL. Zainstalowałem pip od zera zwijaniem i nadal pojawia się błąd po uruchomieniu pipa. Czas porzucić pip i trzymać się conda :(
user1255933
21

Masz następujące możliwości rozwiązania problemu z CERTIFICATE_VERIFY_FAILED:

  • Użyj HTTP zamiast HTTPS (np --index-url=http://pypi.python.org/simple/.).
  • Użyj --cert <trusted.pem>lub CA_BUNDLEzmienna, aby określić alternatywny pakiet urzędu certyfikacji.

    Na przykład możesz przejść do niedziałającego adresu URL z przeglądarki internetowej i zaimportować certyfikat główny do swojego systemu.

  • Uruchom, python -c "import ssl; print(ssl.get_default_verify_paths())"aby sprawdzić bieżący (sprawdź, czy istnieje).

  • OpenSSL ma parę środowisk ( SSL_CERT_DIR, SSL_CERT_FILE), których można użyć do określenia innej bazy danych certyfikatów PEP-476 .
  • Służy --trusted-host <hostname>do oznaczania hosta jako zaufanego.
  • W Pythonie użytku verify=Falsedla requests.get(patrz: Cert Weryfikacja SSL ).
  • Służy --proxy <proxy>do unikania sprawdzania certyfikatów.

Czytaj więcej na: Opakowanie TLS / SSL dla obiektów gniazd - Weryfikowanie certyfikatów .

kenorb
źródło
Od pierwszego punktu, jak określić HTTP za pomocą polecenia pip?
rayzinnz
1
@rayzinnz Dodałem przykład.
Kenorb
16

Ustaw prawidłową godzinę i datę!

Dla mnie okazało się, że moja data i godzina zostały źle skonfigurowane na Raspberry Pi. W rezultacie wszystkie połączenia SSL i HTTPS nie powiodły się, przy użyciu serwera https://files.pythonhosted.org/ .

Zaktualizuj go w następujący sposób:

sudo date -s "Wed Thu  23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata

Lub bezpośrednio z np. Czasem Google:

Ref .: https://superuser.com/a/635024/935136

sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
sudo dpkg-reconfigure tzdata
Thomas Devoogdt
źródło
Doprowadzał mnie do szaleństwa godzinami - dzięki za to. Czas PI był dla mnie o 10 dni wolny, powodując (jak się wydaje) wszelkiego rodzaju błędy podczas instalacji pip.
SteveJ
13

Niedawno natknąłem się na ten problem ze względu na filtr treści WWW mojej firmy, który używa własnego urzędu certyfikacji, aby mógł filtrować ruch SSL. Wydaje się, że PIP nie używa w moim przypadku certyfikatów CA systemu, co powoduje błąd, o którym wspomniałeś. Zmiana PIP na wersję 1.2.1 przedstawiła później swój własny zestaw problemów, więc wróciłem do oryginalnej wersji dostarczonej z Pythonem 3.4.

Moje obejście jest dość proste: użyj easy_install. Albo nie sprawdza certyfikatów (jak stara wersja PIP), albo wie, że używa certyfikatów systemowych, ponieważ działa dla mnie za każdym razem i nadal mogę używać PIP do odinstalowywania pakietów zainstalowanych za pomocą easy_install.

Jeśli to nie zadziała i możesz uzyskać dostęp do sieci lub komputera, na którym nie ma problemu, zawsze możesz skonfigurować własny osobisty serwer PyPI: jak utworzyć lokalny własny indeks repozytorium pypi bez kopii lustrzanej?

Prawie to zrobiłem, dopóki nie spróbowałem użyć easy_installjako ostatniego wysiłku.

Ross Peoples
źródło
Ten sam problem tutaj. Innym obejściem jest wyeksportowanie głównego certyfikatu firmy jako pliku i pipużycie go --cert MyCompanyRootCA.crt.
glibdud
10

Możesz spróbować ominąć błąd SSL, używając http zamiast https. Oczywiście nie jest to optymalne pod względem bezpieczeństwa , ale jeśli się spieszysz, powinieneś załatwić sprawę:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
Augusto Destrero
źródło
1
Spodziewałem się twojej sugestii. Szaleńczo dostałem te same błędy, w tym pierwszyCould not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Jeremy Cook
3
Ok, więc innym obejściem jest pobranie pakietu tar.gz dostępnego tutaj pypi.python.org/pypi/LinkChecker/9.3 i zainstalowanie go za pomocą: pip install LinkChecker-9.3.tar.gz
Augusto Destrero
3
Ale jeśli pakiet, który chcesz zainstalować, ma zależności, musisz pobrać i zainstalować również wszystkie zależności, jeśli jest ich wiele, może to stać się koszmarem.
Augusto Destrero
1
Dla mnie musiałem pobrać plik whl (w moim przypadku pyserial) i zainstalować go. To wychwyciło zależności, które nie zostały zebrane przez tar.gz ... Więc może whl jest inną opcją podobną do @baxeico python -m pip install pyserial-3.4-py2.py3-none-any.whl Dla mnie nic z tego nie działało: 1. --cert cacert.pem 2. certyfikat firmy eksportującej, konwersja do PEM 3. easy_install w cygwin 4. - trust-host
charo
1
Dzisiejsze czasy działają od 2017 roku - dostęp HTTP został całkowicie odcięty. mail.python.org/pipermail/distutils-sig/2017-October/…
gbtimmon
8

Odpowiedzi do wykorzystania

pip install --trusted-host pypi.python.org <package>

praca. Ale musisz sprawdzić, czy są jakieś przekierowania lub piptrafienia do pamięci podręcznej . W systemie Windows 7 z pip 9.0.1musiałem uruchomić

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \
  <package>

Można je znaleźć z pełną flagą.

pmbotter
źródło
7

Zainstalowałem pip 1.2.1 z easy_install i zaktualizowałem do najnowszej wersji pip (w tym czasie 6.0.7), która jest w stanie zainstalować pakiety w moim przypadku.

easy_install pip==1.2.1
pip install --upgrade pip
theofanis
źródło
7

Masz 4 opcje:

Używanie certyfikatu jako parametru

$ pip install --cert /path/to/mycertificate.crt linkchecker

Korzystanie z certyfikatu w pip.conf

Utwórz ten plik:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

i dodaj te linie:

[global]
cert = /path/to/mycertificate.crt

Ignorowanie certyfikatu i używanie HTTP

$ pip install --trusted-host pypi.python.org linkchecker

Ignorowanie certyfikatu i używanie HTTP w pliku pip.conf

Utwórz ten plik:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

i dodaj te linie:

[global]
trusted-host = pypi.python.org

Źródło

Thiago Falcao
źródło
6

Po pierwsze,

    pip install --trusted-host pypi.python.org <package name>

nie działało dla mnie. Wciąż pojawiał się błąd CERTIFICATE_VERIFY_FAILED. Zauważyłem jednak w komunikatach o błędach, że odwołują się do witryny „pypi.org”. Użyłem tego jako zaufanej nazwy hosta zamiast pypi.python.org. To prawie mnie tam doprowadziło; ładowanie nadal nie powiodło się z CERTIFICATE_VERIFY_FAILED, ale w późniejszym momencie. Znajdując odniesienie do strony, która zawiodła, podałem ją jako zaufanego hosta. W końcu zadziałało dla mnie:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
Pat B.
źródło
5

Nie jestem pewien, czy jest to powiązane, ale miałem podobny problem, który został rozwiązany przez skopiowanie tych plików z Anaconda3 / Library / bin do Anaconda3 / DLL:

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

Zimno zimno
źródło
Z Anaconda 2019.03 skopiowałem następujące pliki z <folderu Anaconda3> / Library / bin do <Anaconda3> / DLLs libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssh2.dll libssl-1_1-x64.dll libssl- 1_1-x64.pdb Następnie dodaję błąd ConnectTimeout, więc zaktualizowałem konfigurację proxy .condarc
MordicusEtCubitus
Pracuje. Człowieku, jesteś GENIUSZEM! Wędruję po forach od 1,5 godziny, aby znaleźć to niedoceniane i proste rozwiązanie.
ivan866
4

Miał ten sam problem podczas próby korzystania pip install ftputilz ActivePython 2.7.8, ActivePython 3.4.1 i „zapasowego” Pythona 3.4.2 na 64-bitowym systemie Windows 7 Enterprise. Wszystkie próby zakończyły się niepowodzeniem z tymi samymi błędami co OP.

Rozwiązano problem dotyczący Python 3.4.2, obniżając wersję do pip 1.2.1: easy_install pip==1.2.1(patrz https://stackoverflow.com/a/16370731/234235 ). Ta sama poprawka działała również w ActivePython 2.7.8.

Błąd zgłoszony w marcu 2013 r. Jest nadal otwarty: https://github.com/pypa/pip/issues/829 .

psteiner
źródło
To również działało dla mnie. Chociaż może to wydawać się złym pomysłem w przypadku przejścia na starszą wersję pipa, miałem do czynienia ze starymi pakietami django, więc stara wersja pipa faktycznie pasowała do innych pakietów.
mknaf
Problem 829 jest teraz zamknięty.
Ortomala Lokni
3

Nic na tej stronie nie działało dla mnie, dopóki nie użyłem opcji --verbose, aby przekonać się, że chcę dostać się do files.pythonhosted.org zamiast pypi.python.org:

pip install --trusted-host files.pythonhosted.org <package_name>

Więc sprawdź adres URL, który tak naprawdę nie działa, za pomocą opcji --verbose.

Dan Austin
źródło
2

Rozwiązałem ten problem, usuwając mój pip i instalując starszą wersję pipa: https://pypi.python.org/pypi/pip/1.2.1

użytkownik3080641
źródło
Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
apomene
@apomene, jak ma OP, include the essential parts of the answer hereponieważ jest to link do pliku binarnego ...?
Thomas Ayoub,
@ThomasAyoub, wierzę, że już wiesz, że powyższa wiadomość jest automatycznie wypełniana z SO, gdy zaznaczasz odpowiedź jako jedyną odpowiedź linku
apomene
@apomene, które nie odpowiadają na moje pytanie, nadal nie widzę, co OP mógłby / powinien dodać?
Thomas Ayoub,
1
@ThomasAyoub, aby rozwinąć sprawę, mój komentarz (SO) wskazuje, że pytanie jest krótkie i zawiera tylko link, co oznacza, że ​​może to być komentarz. Moim zamiarem nie było jednoznaczne stwierdzenie, że OP powinien dodać szczegóły dotyczące przekierowania linku, ale szczegóły, dlaczego to odpowiada na pytanie.
apomene
2

Możesz spróbować zignorować „https”:

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]
Smaillns
źródło
1
jeśli masz jeszcze inne problemy z wersją pipa, możesz spróbować pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns
2

Jednym z rozwiązań ( dla systemu Windows ) jest utworzenie pliku wywoływanego pip.iniw %AppData%\pip\folderze (utwórz folder, jeśli nie istnieje) i wstaw następujące informacje:

[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port

... a następnie możemy wykonać instrukcję instalacji:

pip3 install PyQt5

Inną opcją jest instalacja pakietu przy użyciu argumentów dla serwera proxy i certyfikatu ...

$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
   --cert C:/certs/python_root.pem PyQt5

Aby przekonwertować *.cerpliki certyfikatów do wymaganego *.pemformatu, wykonaj następującą instrukcję:

$ openssl x509 -inform der -in python_root.cer -out python_root.pem

Mam nadzieję, że to komuś pomoże!

Marco
źródło
1
W przypadku innych systemów operacyjnych spójrz na odpowiedź Alexa-Antoine Fortina
Dinei
Nie potrzebowałem proxy, tylko certyfikat. Pobiegłem; pip3.6 config set global.cert '/<path>/server.crt'
avatarofhope2
2

W moim przypadku było to spowodowane podpisaniem certyfikatu SSL przez wewnętrzny urząd certyfikacji mojej firmy. Korzystanie z obejść takich pip --certjak nie pomogło, ale następujący pakiet zrobił:

pip install pip_system_certs

Zobacz: https://pypi.org/project/pip-system-certs/

Ten pakiet łata pip i żąda w czasie wykonywania używania certyfikatów z domyślnego magazynu systemu (zamiast dołączonych certyfikatów ca).

Pozwoli to pipowi zweryfikować połączenia tls / ssl z serwerami, którym certyfikat jest zaufany podczas instalacji systemu.

courteouselk
źródło
1
wydaje się, że konieczne jest zainstalowanie pip_sysem_certs, aby unieważnić błąd [SSL: CERTIFICATE_VERIFY_FAILED], problem polega na tym, że próba zainstalowania dostała błąd [SSL: CERTIFICATE_VERIFY_FAILED] błąd ...
athos
Być może w pewnym momencie było to rozwiązanie, ale pip_system_certscałkowicie zepsuło moje środowisko Pythona iz tego powodu nie jest to dobra odpowiedź. Nie instaluj pip_system_certs. Aby uzyskać więcej informacji, zobacz stackoverflow.com/questions/27835619/ ...
h0r53
1

dla mnie dzieje się tak, ponieważ wcześniej uruchamiam skrypt, który ustawia proxy (na skrzypek), ponownie otwiera konsolę lub resetuje, aby naprawić problem.

uingtea
źródło
Skrzypek można ominąć, ustawiając „Odszyfruj ruch HTTPS” na „... tylko z przeglądarek” w Narzędzia | Opcje. To rozwiązało problem.
tefyr
1

Ostatnio spotkałem się z tym samym problemem w Pythonie 3.6 w Visual Studio 2015. Po spędzeniu 2 dni dostałem rozwiązanie i działa dobrze dla mnie.

Wystąpił błąd poniżej podczas próby zainstalowania numpy za pomocą pipa lub ze studia wizualnego Zbieranie numpy Nie można pobrać adresu URL https://pypi.python.org/simple/numpy/ : Wystąpił problem z potwierdzeniem certyfikatu ssl: [SSL: CERTIFICATE_VERIFY_FAILED] weryfikacja certyfikatu nie powiodła się (_ssl.c: 748) - pomijanie Nie można znaleźć wersji spełniającej wymaganie numpy (z wersji:) Nie znaleziono pasującej dystrybucji dla numpy

Rozdzielczość:

Dla systemu operacyjnego Windows

  1. otwórz -> „% appdata%” Utwórz folder „pip”, jeśli nie istnieje.
  2. W folderze pip utwórz plik „pip.ini”.
  3. Edytuj plik i napisz
    [global]
    trust-host = pypi.python.org Zapisz i zamknij plik. Teraz zainstaluj za pomocą pip / visual studio, działa dobrze.
Ankit Raval
źródło
1

W moim przypadku uruchomiłem Python na minimalnym obrazie dokera alpejskiego. Brakowało certyfikatów głównego urzędu certyfikacji. Naprawić:

apk update && apk add ca-certificates

Martin Melka
źródło
1

Odpowiedź Vaulsteina pomogła mi.

Nigdzie na komputerze nie znalazłem pliku pip.ini. Podobnie było z następującymi.

  1. Poszedł do folderu AppData. Możesz pobrać folder appdata, otwierając wiersz polecenia i wpisz echo% AppData%

Lokalizacja AppData za pomocą wiersza polecenia

Lub po prostu wpisz% AppData% w Eksploratorze Windows.

Lokalizacja AppData w Eksploratorze Windows

  1. Utwórz folder o nazwie pip w tym folderze appdata.

  2. W właśnie utworzonym folderze pip utwórz prosty plik tekstowy o nazwie pip.ini

  3. Przeprowadź następujące ustawienia konfiguracji w tym pliku za pomocą prostego edytora do wyboru.

plik pip.ini:

[list]
format=columns

[global]
trusted-host = pypi.python.org pypi.org

Powinieneś już być gotowy.

VivekDev
źródło
1

Napotkałem podobny problem. Rozwiązanie, które działało dla mnie 1) odinstaluj python 2.7 2) usuń folder python27 3) zainstaluj ponownie najnowszy python

Satyam Raikar
źródło
0

Dla mnie żadna z sugerowanych metod nie działała - przy użyciu certyfikatu, HTTP, zaufanego hosta.

W moim przypadku działało przejście na inną wersję pakietu (w tym przypadku paho-mqtt 1.3.1 zamiast paho-mqtt 1.3.0).

Wygląda na to, że problem był specyficzny dla tej wersji pakietu.

MiN
źródło
0

Ten problem może występować, jeśli w systemie brakuje niektórych certyfikatów. Np. Na opensuse install ca-certyfikaty-mozilla

sancelot
źródło