La instalación de pip falla con "error de conexión: [SSL: CERTIFICATE_VERIFY_FAILED] verificación fallida del certificado (_ssl.c:598)"

Resuelto Jeremy Cook asked hace 10 años • 0 respuestas

Soy muy nuevo en Python y lo intento > pip install linkcheckeren Windows 7. Algunas notas:

  • La instalación de pip falla sin importar el paquete. Por ejemplo, > pip install scrapytambién produce el error SSL.
  • La instalación básica de Python 3.4.1 incluía pip 1.5.6. Lo primero que intenté hacer fue instalar linkchecker. Python 2.7 ya estaba instalado, venía con ArcGIS. pythony pipno estaban disponibles desde la línea de comando hasta que instalé 3.4.1.
  • > pip search linkcheckerobras. Quizás eso se deba a que la búsqueda de pip no verifica el certificado SSL del sitio.
  • Estoy en la red de una empresa pero no pasamos por un proxy para llegar a Internet.
  • Cada computadora de la empresa (incluida la mía) tiene una autoridad de certificación raíz confiable que se utiliza por diversos motivos, incluida la habilitación del monitoreo del tráfico TLS a 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 ejecutarlo 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 avatar Sep 23 '14 02:09 Jeremy Cook
Aceptado

ACTUALIZACIÓN: 2023-08: pip.conf no tiene un campo para sslverify false. Es posible que esto haya funcionado hace años, pero no funciona hoy.


utilizar trusted-hosten pip.conf o en el argumento de línea de comando

Puede ignorar los errores de SSL configurando pypi.orgy files.pythonhosted.orgtambién los pypi.python.orghosts más antiguos como confiables.

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

Nota : En algún momento durante abril de 2018, el índice de paquetes de Python se migró de pypi.python.orga pypi.org. Esto significa que los comandos de "host confiable" que usan el dominio anterior ya no funcionan, pero puedes agregar ambos.

Solución permanente

Desde el lanzamiento de pip 10.0, deberías poder solucionar este problema permanentemente simplemente actualizándote pip:

$ pip install --trusted-host pypi.org --trusted-host pypi.python.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 ejecutar get-pip.pycon el intérprete de Python correspondiente).

pip install <otherpackage>debería funcionar después de esto. De lo contrario, deberá hacer más, como se explica a continuación.


Es posible que desee agregar los hosts y el proxy de confianza 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:

  • Usando easy_install : si eres muy vago y no quieres perder mucho tiempo, usa easy_install <package_name>. Tenga en cuenta que algunos paquetes no se encontrarán o darán pequeños errores.
  • Usando Wheel : descargue el paquete Wheel del python y use el comando pip pip install wheel_package_name.whlpara instalar el paquete.
Vaulstein avatar Apr 20 '2015 15:04 Vaulstein

Utilice el --certargumento:

Puede especificar un certificado con:

pip --cert <path/to/cert>.pem install <package list>

p.ej:

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

Ver: Documentos » Guía de referencia » pip

Si especificar el certificado raíz de su empresa no funciona, tal vez el de 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.

Consulte también: Verificación de certificado SSL .

Steve Tauber avatar Sep 26 '2014 14:09 Steve Tauber