la instalación de pip falla con “error de conexión: error en la verificación del certificado (_ssl.c: 598)”

Soy muy nuevo en Python y estoy intentando > pip install linkchecker en Windows 7. Algunas notas:

  • La instalación de pip está fallando sin importar el paquete. Por ejemplo, > pip install scrapy también produce el error SSL.
  • La instalación de vainilla de Python 3.4.1 incluye pip 1.5.6. Lo primero que intenté hacer fue instalar linkchecker. Python 2.7 ya estaba instalado, vino con ArcGIS. python y pip no estaban disponibles desde la línea de comandos hasta que instalé 3.4.1.
  • > pip search linkchecker funciona. Tal vez sea porque la búsqueda pip no verifica el certificado SSL del sitio.
  • Estoy en una red de la empresa pero no pasamos por un proxy para llegar a Internet.
  • Cada computadora de la compañía (incluida la mía) tiene una Autoridad de Certificación de Raíz de Confianza que se usa por varios motivos, incluida la habilitación del monitoreo del tráfico TLS en https://google.com . No estoy seguro si eso tiene algo que ver con eso.

Aquí está el contenido de mi pip.log después de ejecutar el 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 : 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 

Puede ignorar los errores de SSL configurando pypi.org y files.pythonhosted.org como hosts de confianza.

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

Nota : En algún momento de abril de 2018, el Índice de Paquetes de Python se migró de pypi.python.org a pypi.org . Esto significa que los comandos de “servidor de confianza” que usan el dominio antiguo ya no funcionan.

Arreglo permanente

Desde el lanzamiento de pip 10.0, deberías poder solucionar esto de forma permanente simplemente actualizando pip :

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

O simplemente reinstalándolo para obtener la última versión:

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

(… y luego ejecuta get-pip.py con el intérprete de Python relevante).

pip install debería funcionar después de esto. Si no es así, deberá hacer más, como se explica a continuación.


Es posible que desee agregar los hosts de confianza y el proxy a su archivo de configuración .

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

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

Soluciones alternativas (menos seguras)

La mayoría de las respuestas podrían plantear un problema de seguridad.

Dos de las soluciones que ayudan a instalar la mayoría de los paquetes de Python con facilidad serían:

  • Uso de easy_install : si es realmente vago y no quiere perder mucho tiempo, use easy_install . Tenga en cuenta que algunos paquetes no se encontrarán o darán pequeños errores.
  • Utilización de Wheel : descargue el paquete Wheel of the python y use el comando pip install wheel_package_name.whl para instalar el paquete.

Puede especificar un certificado con este parámetro:

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

Ver: Docs »Guía de referencia» pip

Si la especificación del certificado raíz de su empresa no funciona, quizás la cURL funcione: http://curl.haxx.se/ca/cacert.pem

Debe utilizar un archivo PEM y no un archivo CRT. Si tiene un archivo CRT, deberá convertir el archivo a PEM. Hay informes en los comentarios de que esto ahora funciona con un archivo CRT pero no lo he verificado.

También revise: SSL Cert Verification .

La respuesta de kenorb es muy útil (¡y genial!).
Entre sus soluciones, tal vez esta sea la más simple:

Por ejemplo, en este caso puedes hacer

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

El archivo pem (o cualquier otra cosa) es innecesario.

Las respuestas son bastante similares y un poco confusas. En mi caso, los certificados en la red de mi empresa fue el problema. Pude solucionar el problema usando:

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

Como se ve aquí . El argumento -vvv se puede omitir si no se requiere una salida detallada

La forma más sencilla que he encontrado, es descargar y utilizar la “CA de raíz EV EV High Assurance de DigiCert” de DigiCert en https://www.digicert.com/digicert-root-certificates.htm#roots

Puede visitar https://pypi.python.org/ para verificar el emisor del certificado haciendo clic en el ícono de candado en la barra de direcciones, o boost su credencial de geek usando 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 

El último valor de CN en la cadena de certificados es el nombre de la CA que necesita descargar.

Para un esfuerzo único, haga lo siguiente:

  1. Descargue el CRT de DigiCert
  2. Convertir el formato CRT a PEM
  3. Exporte la variable de entorno PIP_CERT a la ruta del archivo PEM

(la última línea supone que estás usando el shell bash) antes de ejecutar 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 

Para hacer esto reutilizable, ponga DigiCertHighAssuranceEVRootCA.crt en algún lugar común y exporte PIP_CERT en consecuencia en su ~ / .bashrc.

Para resolver este problema de una vez por todas, puede verificar que tiene un archivo pip.conf .

Aquí es donde debería estar su pip.conf , de acuerdo con la documentación :

En Unix, el archivo de configuración predeterminado es: $HOME/.config/pip/pip.conf que respeta la variable de entorno XDG_CONFIG_HOME.

En macOS, el archivo de configuración es $HOME/Library/Application Support/pip/pip.conf si el directorio $HOME/Library/Application Support/pip existe otra cosa $HOME/.config/pip/pip.conf

En Windows, el archivo de configuración es %APPDATA%\pip\pip.ini .

Dentro de un virtualenv:

En Unix y macOS, el archivo es $VIRTUAL_ENV/pip.conf

En Windows, el archivo es: %VIRTUAL_ENV%\pip.ini

Tu pip.conf debería verse como:

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

pip install linkchecker instaló el linkchecker sin quejas después de crear el archivo pip.conf .

Tienes las siguientes posibilidades para resolver un problema con CERTIFICATE_VERIFY_FAILED :

  • Utilice HTTP en lugar de HTTPS.
  • Use la --cert o CA_BUNDLE para especificar un paquete CA alternativo.

    Por ejemplo, puede ir a la URL defectuosa desde el navegador web e importar el certificado raíz a su sistema.

  • Ejecute python -c "import ssl; print(ssl.get_default_verify_paths())" para verificar el actual (validar si existe).

  • OpenSSL tiene un par de entornos ( SSL_CERT_DIR , SSL_CERT_FILE ) que se pueden usar para especificar diferentes bases de datos de certificados PEP-476 .
  • Utilice --trusted-host para marcar el host como confiable.
  • En Python use verify=False para requests.get (consulte: Verificación del certificado SSL ).
  • Utilice --proxy para evitar la verificación de certificados.

Lea más en: Contenedor TLS / SSL para objetos de socket – Verificación de certificados .

Para mí, el problema se solucionó creando una carpeta pip , con un archivo: pip.ini en C:\Users\\AppData\Roaming\ por ejemplo:

 C:\Users\\AppData\Roaming\pip\pip.ini 

En su interior escribí:

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

Reinicié Python, y luego pip permanentemente confié en estos sitios, y los usé para descargar paquetes de.

Recientemente me encontré con este problema debido al filtro de contenido web de mi empresa que utiliza su propia Autoridad de certificación para que pueda filtrar el tráfico SSL. PIP no parece estar utilizando los certificados de CA del sistema en mi caso, produciendo el error que menciona. La degradación de PIP a la versión 1.2.1 presentó su propio conjunto de problemas más adelante, así que volví a la versión original que venía con Python 3.4.

Mi solución es bastante simple: use easy_install . O no comprueba los certificados (como la versión PIP antigua), o sabe usar los certificados del sistema porque siempre me funciona y puedo usar PIP para desinstalar los paquetes instalados con easy_install.

Si eso no funciona y puede obtener acceso a una red o computadora que no tiene el problema, siempre puede configurar su propio servidor PyPI personal: ¿cómo crear un índice de repository pypi local sin espejo?

Casi lo hice hasta que intenté usar easy_install como último esfuerzo de zanja.

Puede intentar omitir el error SSL utilizando http en lugar de https. Por supuesto, esto no es óptimo en términos de seguridad , pero si tiene prisa, debería hacer el truco:

 pip install --index-url=http://pypi.python.org/simple/ linkchecker 

Instalé pip 1.2.1 con easy_install y actualicé a la última versión de pip (6.0.7 en ese momento), que es capaz de instalar paquetes en mi caso.

 easy_install pip==1.2.1 pip install --upgrade pip 

Las respuestas a utilizar.

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

trabajo. Pero tendrás que comprobar si hay redirecciones o cachés que está golpeando. En Windows 7 con pip 9.0.1 , tuve que correr

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

Usted puede encontrar estos con la bandera verbosa.

Ajuste la fecha y hora correcta!

Mabey, llego un poco tarde para contestar.

Para mí, se supo que mi fecha y hora estaban mal configuradas en Raspberry Pi. El resultado fue que todas las conexiones SSL y HTTPS fallaron, utilizando el servidor https://files.pythonhosted.org/ .

Actualízalo así:

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

Ante todo,

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

no funciono para mi Seguí recibiendo el error CERTIFICATE_VERIFY_FAILED. Sin embargo, noté en los mensajes de error que hacían referencia al sitio ‘pypi.org’. Entonces, utilicé esto como el nombre de host de confianza en lugar de pypi.python.org. Eso casi me lleva allí; la carga seguía fallando con CERTIFICATE_VERIFY_FAILED, pero en un momento posterior. Al encontrar la referencia al sitio web que estaba fallando, lo incluí como un host de confianza. Lo que eventualmente funcionó para mí fue:

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

Tienes 4 opciones:

Usando un certificado como parámetro

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

Usando un certificado en un pip.conf

Crea este archivo:

 $HOME/.pip/pip.conf (Linux) %HOME%\pip\pip.ini (Windows) 

y añade estas líneas:

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

Ignorando el certificado y utilizando HTTP

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

Ignorando el certificado y utilizando HTTP en un pip.conf

Crea este archivo:

 $HOME/.pip/pip.conf (Linux) %HOME%\pip\pip.ini (Windows) 

y añade estas líneas:

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

Fuente

Tuvo el mismo problema al tratar de pip install ftputil con ActivePython 2.7.8, ActivePython 3.4.1 y “stock” Python 3.4.2 en Windows 7 Enterprise de 64 bits. Todos los bashs fallaron con los mismos errores que OP.

Se resolvió el problema de Python 3.4.2 mediante la degradación a pip 1.2.1: easy_install pip==1.2.1 (consulte https://stackoverflow.com/a/16370731/234235 ). La misma solución también funcionó para ActivePython 2.7.8.

El error, publicado en marzo de 2013, aún está abierto: https://github.com/pypa/pip/issues/829 .

Nada en esta página funcionó para mí hasta que usé la opción –verbose para ver que quería acceder a files.pythonhosted.org en lugar de pypi.python.org:

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

Así que verifique la URL en la que está fallando a través de la opción –verbose.

Resolví este problema eliminando mi pip e instalando la versión anterior de pip: https://pypi.python.org/pypi/pip/1.2.1

Puedes intentar esto para ignorar “https”:

 pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..] 

para mí esto se debe a que anteriormente ejecutaba un script que configuraba el proxy (para fiddler), volvía a abrir la consola o reiniciaba el problema.

Recientemente enfrenté el mismo problema en Python 3.6 con Visual Studio 2015. Después de pasar 2 días, obtuve la solución y funcionó bien para mí.

Obtuve el error siguiente al intentar instalar numpy usando pip o desde visual studio. Recostackr numpy No se pudo recuperar la URL https://pypi.python.org/simple/numpy/ : hubo un problema al confirmar el certificado ssl: [SSL: CERTIFICATE_VERIFY_FAILED] fallo en la verificación del certificado (_ssl.c: 748) – omitiendo No se pudo encontrar una versión que cumpla con el número de requisito (de las versiones:) No se encontró una distribución coincidente para el número

Resolución:

Para el sistema operativo Windows

  1. abrir -> carpeta “% appdata%” Crear “pip” si no existe.
  2. En la carpeta pip crea el archivo “pip.ini”.
  3. Editar archivo y escribir
    [global]
    trusted-host = pypi.python.org Guarde y cierre el archivo. Ahora instale usando pip / visual studio funciona bien.

La respuesta de Vaulstein me ayudó.

No encontré el archivo pip.ini en mi PC. Así hizo lo siguiente.

  1. Fui a la carpeta AppData. Puede obtener la carpeta appdata abriendo el símbolo del sistema y escribiendo echo% AppData%

Ubicación de AppData usando el símbolo del sistema

O simplemente escriba% AppData% en el explorador de Windows.

Ubicación de AppData en Windows Explorer

  1. Crea una carpeta llamada pip dentro de esa carpeta appdata.

  2. En la carpeta pip que acaba de crear, cree un archivo de texto simple llamado pip.ini

  3. Más allá de los siguientes ajustes de configuración en ese archivo, utilice un editor simple de su elección.

archivo pip.ini:

 [list] format=columns [global] trusted-host = pypi.python.org pypi.org 

Ahora debería ser bueno para ir

Una solución ( para Windows ) es crear un archivo llamado pip.ini en la carpeta %AppData%\pip\ (cree la carpeta si no existe) e inserte los siguientes detalles:

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

… y luego podemos ejecutar la instrucción de instalación:

 pip3 install PyQt5 

Otra opción es instalar el paquete usando argumentos para el proxy y el certificado …

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

Para convertir los archivos de certificado *.cer al formato *.pem requerido, ejecute la siguiente instrucción:

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

¡Espero que esto ayude a alguien!

Para mí, ninguno de los métodos sugeridos funcionó: usar cert, HTTP, servidor de confianza.

En mi caso, el cambio a una versión diferente del paquete funcionó (paho-mqtt 1.3.1 en lugar de paho-mqtt 1.3.0 en este caso).

Parece que el problema era específico para esa versión del paquete.

En mi caso, estaba ejecutando Python en la imagen minimalista de la ventana acoplable alpina. Faltaban certificados de CA raíz. Fijar:

apk update && apk add ca-certificates

Es posible que tenga este problema si faltan algunos certificados en su system.eg en opensuse install ca-certificate-mozilla

A partir de ahora, cuando pip se ha actualizado a 10 y ahora han cambiado su ruta de acceso de pypi.python.org a files.pythonhosted.org.

Si ha instalado Python manualmente usando make , tendrá que seguir esta respuesta: https://stackoverflow.com/a/42798679/6403406 para que funcione.