No se pueden instalar los paquetes de Python

Estoy intentando instalar una biblioteca de Python usando pip , obteniendo un error de SSL:

 ~/projects/base  pre-master± pip install xdict Collecting xdict Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping Could not find a version that satisfies the requirement xdict (from versions: ) No matching distribution found for xdict 

versión pip: pip 9.0.1

¿Cómo soluciono este error?

Actualizar pip de la siguiente manera:

 curl https://bootstrap.pypa.io/get-pip.py | python 

Nota: Es posible que deba usar sudo python arriba si no está en un entorno virtual.

(Tenga en cuenta que la actualización de pip utilizando pip es decir pip install --upgrade pip tampoco la actualizará correctamente. Es solo un problema de gallina y huevo. pip no funcionará a menos que use TLS> = 1.2.)

Como se mencionó en esta respuesta detallada , esto se debe a la reciente desaprobación de TLS para pip. Los sitios de Python.org han dejado de admitir las versiones 1.0 y 1.1 de TLS.

Desde la página de estado de Python:

Completado : las caídas de tensión de rodadura están terminadas y TLSv1.0 y TLSv1.1 se han deshabilitado. 11 de abril, 15:37 UTC

Para los usuarios de PyCharm (virtualenv):

  1. Ejecutar entorno virtual con shell. (Reemplace “./venv/bin/activate” a su propio camino)

     source ./venv/bin/activate 
  2. Ejecutar actualización

     curl https://bootstrap.pypa.io/get-pip.py | python 
  3. Reinicie su instancia de PyCharm y verifique su intérprete de Python en Preferencias .

Pero si el comando curl falla con el error, o la “versión del protocolo de alerta tlsv1” persiste incluso después de actualizar pip , significa que la versión de la biblioteca OpenSSL subyacente de su sistema operativo < 1.0.1 o la versión de Python < 2.7.9 (o < 3.4 en Python 3 ) no son compatibles con el nuevo protocolo TLS 1.2 que pip necesita para conectarse a PyPI desde hace aproximadamente un año . Puede comprobarlo fácilmente en el intérprete de Python:

 >>> import ssl >>> ssl.OPENSSL_VERSION 'OpenSSL 0.9.8o 01 Jun 2010' >>> ssl.PROTOCOL_TLSv1_2 AttributeError: 'module' object has no attribute 'PROTOCOL_TLSv1_2' 

AttributeError (en lugar del esperado ‘5’) significa que su módulo stslib stslib ssl Python, comstackdo contra el antiguo openssl lib, carece de soporte para el protocolo TLSv1.2 (incluso si la biblioteca openssl puede o podría actualizarse más adelante).

Afortunadamente, se puede resolver sin actualizar Python (y todo el sistema), instalando manualmente paquetes adicionales de Python. La guía detallada paso a paso está disponible aquí en Stackoverflow .

Tenga en cuenta que curl y pip y wget dependen de la misma biblioteca de OpenSSL para establecer conexiones SSL (use el comando $ openssl version ). libcurl admite TLS 1.2 desde la versión de curl 7.34 , pero las versiones más antiguas de curl deberían poder conectarse si tenía OpenSSL versión 1.0.2 (o posterior).


PD
Para Python 3 , use python3 y pip3 todas partes (a menos que esté en un venv / virtualenv), incluido el comando curl desde arriba :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user

Seguir la respuesta de @ Anupam en OS X me dio el siguiente error, independientemente de los permisos con los que lo ejecuté:

No se pudieron instalar paquetes debido a un EnvironmentError: [Errno 13] Permiso denegado: …

Lo que finalmente funcionó fue descargar un paquete pip más nuevo (9.0.3) desde PyPI directamente desde mi navegador: https://pypi.org/simple/pip/ , extraer el contenido y luego instalar el paquete localmente:

 pip install ./pip-9.0.3/ 

Esto corrigió mis errores [SSL: TLSV1_ALERT_PROTOCOL_VERSION] .

La siguiente solución funcionó para mí:

 brew install python2 

También actualizó pip a la versión 1.10.1

La solución de @Anupam funcionó para mí. Sin embargo, tuve que usar sudo y especificar la ubicación exacta de mi entorno virtual de Python:

 curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python 

Para actualizar la versión local utilicé una ligera variante:

 curl https://bootstrap.pypa.io/get-pip.py | python - --user 

Este problema surge si mantiene su pip y sus paquetes en su directorio de inicio como se describe en este resumen .

Compruebe su versión TLS:

 python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])" 

Si su versión de TLS es inferior a 1.2, debe actualizarla, ya que el repository de PyPI se encuentra en un período de interrupción de la redacción de TLS.

Fuente: hora de actualizar tu Python: TLS v1.2 pronto será obligatorio

Puede actualizar la versión TLS usando el siguiente comando:

 sudo apt-get update && sudo apt-get install openssl libssl-dev 

Esto debería solucionar su problema. ¡Buena suerte!

EDITAR: Puede descargar paquetes utilizando su propio repository privado de paquetes de Python, independientemente de la versión TLS. Repositorio de paquetes de Python privado

Para usuarios de Python2 WIN10:

1. Desinstale Python a fondo, incluya todas las carpetas.

2. Busque e instale el último python-2.7.msi (versión 2.7.15)

3. Después del paso 2, es posible que también se haya instalado pip.

4. Ahora, si su sistema no ha cambiado, puede usar pip para instalar paquetes ahora. La “versión del protocolo de alerta tlsv1” no aparecerá.

He intentado todas las correcciones existentes y no funciona para mí

Reinstalo Python 2.7 (también instalaré pip) descargando .pkg en https://www.python.org/downloads/mac-osx/

funciona para mí después de la instalación descargado pkg

Me encontré con este problema también. El problema subyacente es que la biblioteca ssl en las versiones Python 2.7 <2.7.9 ya no es compatible con el mecanismo pip.

Si está ejecutando en Windows, y (como nosotros) no puede actualizar fácilmente desde una versión incompatible de 2.7, FWIW, descubrí que si copia los siguientes archivos de otra instalación de la última versión de Python (por ejemplo, Python 2.7. 15) en otra máquina para su instalación:

  Lib\ssl.py libs\_ssl.lib DLLs\_ssl.dll 

efectivamente “actualizará” su capa SSL a una que sea compatible; Entonces pudimos usar pip nuevamente, incluso para actualizar pip.

Esto me funcionó, instalé la última versión de pip y luego instalé la biblioteca ( ciscoconfparse ).

Actualización de pip:

 curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python 

Esto funcionó para mí. Añadir sudo antes de python

 curl https://bootstrap.pypa.io/get-pip.py |sudo python 

Myenv:

python 2.7.14

pip 9.0.1

mac osx 10.9.4


mi solución:

  1. descargue get-pip.py manualmente desde https://packaging.python.org/tutorials/installing-packages/

  2. ejecutar python get-pip.py


refs:

https://github.com/pypa/warehouse/issues/3293#issuecomment-378468534

https://packaging.python.org/tutorials/installing-packages/

Descarga segura de get-pip.py [1]

Ejecutar python get-pip.py. [2] Esto instalará o actualizará pip. Además, instalará setuptools y wheel si aún no están instalados.

Asegúrese de que pip, setuptools y wheel estén actualizados

Si bien pip solo es suficiente para instalar desde archivos binarios pre-construidos, las copias actualizadas de las herramientas de configuración y los proyectos de rueda son útiles para asegurar que también pueda instalar desde archivos de origen:

python -m pip install --upgrade pip setuptools wheel

También encontré este problema en mi Windows 10 e intenté todas las respuestas pero no resolví mi problema.

C: \ python367 \ Scripts> pip install Flask

Recostackción del matraz No se pudo encontrar una versión que cumpla con el requisito Matraz (de las versiones:) No se encontró una distribución coincidente para el matraz

Después de eso, encontré que el archivo de configuración pip había sido modificado. Por lo tanto, configuro el pip.ini como la configuración predeterminada original, ¡ pip.ini ejecutar el comando pip y funciona para mí!

En resumen de la solución mía:

  1. Compruebe que pip.ini (normalmente en la ruta C:\ProgramData\pip ) haya sido modificado;

  2. Si es así en el paso 1, intente restablecerlo a una configuración predeterminada.