"El módulo ssl en Python no está disponible" al instalar el paquete con pip3


122

Instalé Python 3.4 y Python 3.6 en mi máquina local con éxito, pero no puedo instalar paquetes con pip3.

Cuando ejecuto pip3 install <package>, obtengo el siguiente error relacionado con SSL :

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting <package>
  Could not fetch URL https://pypi.python.org/simple/<package>/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
  Could not find a version that satisfies the requirement <package> (from versions: )
No matching distribution found for <package>

¿Cómo puedo arreglar mi instalación de Python3.x para poder instalar paquetes con pip install <package>?


4
¿Instalaste explícitamente pip3 en tu ubuntu con el comando sudo apt-get install python3-pip?
Sidahmed

2
Intente pip3 install --upgrade pipver si recibe el mismo mensaje o no.
herry

Respuestas:


92

Guía paso a paso para instalar Python 3.6 y pip3 en Ubuntu

  1. Instale los paquetes necesarios para Python y ssl: $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

  2. Descargue y descomprima "Python-3.6.8.tar.xz" de https://www.python.org/ftp/python/ en su directorio personal.

  3. Abra la terminal en ese directorio y ejecute: $ ./configure

  4. Construya e instale: $ sudo make && sudo make install

  5. Instalar paquetes con: $ pip3 install package_name


4
Trabajó en "Raspbian GNU / Linux 9 (stretch)"
Oktay

2
¡Gracias! Estaba dando vueltas en círculos haciendo que python3 funcionara en Ubuntu 14.04 hasta que encontré esta lista de comandos.
jerrylogansquare

2
Mi salvador de Ubuntu.
Markroxor

6
Esto funcionó para mí. Muchas gracias. Sin embargo, una cosa que no pude entender, ¿por qué no comenzar con el paso 4 y solo "hacer; hacer instalar" una vez?
Avestruz parafilia

1
Trabajó en Ubuntu Beaver. Estaba usando python3.7 y pip 19, siempre con problemas de SSL ...
eduardosufan

62

Si está en Red Hat / CentOS:

# To allow for building python ssl libs
yum install openssl-devel
# Download the source of *any* python version
cd /usr/src
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar xf Python-3.6.2.tar.xz 
cd Python-3.6.2

# Configure the build w/ your installed libraries
./configure

# Install into /usr/local/bin/python3.6, don't overwrite global python bin
make altinstall

también funcionó para Python 2.7. simplemente agregue make y make altinstall
Jabda

Si necesita virtualenv, debe ejecutar sudo /usr/local/bin/pip3.7 install virtualenv. ¡Gracias por esta respuesta!
tecnócrata

excelente, estaba teniendo problemas para instalar Python 2.7.13 para una imagen de ventana acoplable heredada y necesitaba openssl-develejecutarlopython2.7 get-pip.py
Felipe

59

Si está en Windows y usa anaconda, esto funcionó para mí:

Probé muchas otras soluciones que no funcionaron (cambios en la variable PATH del entorno ...)

El problema puede ser causado por archivos DLL en la carpeta Windows \ System32 (por ejemplo, libcrypto-1_1-x64.dll o libssl-1_1-x64.dll u otros) colocados allí por otro software.

La solución fue instalar openSSL desde https://slproweb.com/products/Win32OpenSSL.html que reemplaza los dlls por versiones más recientes.


2
Lo acabo de instalar. En la lista de programas instalados en mi sistema, tengo tres versiones de OpenSSL (dos versiones de 64 bits y una de 32 bits, aunque estoy en un sistema de 64 bits). No soy consciente de haberlos instalado todos, así que los dejé allí.
juergi

1
Esta fue la solución más sencilla que encontré después de mucho buscar. Pip no funcionaba debido a un error de OpenSSL. Spyder también se bloqueó en el inicio debido a un error "no se puede importar el nombre 'HTTPSHandler' de 'urllib.request'". Esto se aisló en Windows 10 Python 3 para mí. Al comentar para ayudar a vincular la solución para las personas que buscan en Google, la mayoría de los resultados principales fueron soluciones antiguas y complejas.
Dick McManus

8
Si está en Windows y usa Anaconda, simplemente use Anaconda Prompt en lugar de cmd para ejecutar "pip install". No se requerirá ningún cambio adicional de DLL / SSL.
FatihAkici

1
@FatihAkici - Muchas gracias. Me ayudó.
Raju Penumatsa

2
Estaba a punto de romper mi computadora, usé pycharm en muchas máquinas y sistemas operativos, pero en este nuevo Windows instalé anaconda y parece que se rompió el pip. Estuve navegando como 2 horas, muchas gracias amigo. <3
Benoit F

35

Tuve un problema similar en OSX 10.11 debido a la instalación de Memcached, que instaló Python 3.7 sobre 3.6.

ADVERTENCIA: pip está configurado con ubicaciones que requieren TLS / SSL, sin embargo, el módulo ssl en Python no está disponible.

Pasé horas desvinculando openssl, reinstalando, cambiando rutas ... y nada ayudó. Cambiar la versión de openssl de la versión anterior hizo el truco:

brew switch openssl 1.0.2e

No vi esta sugerencia en ningún lugar de Internet. Espero que le sirva a alguien.


3
Tuve el mismo problema con MacOS Catalina 10.5.4 (Beta), ahora funciona. ¡Gracias!
Peter Rosemann

14
Para mí lo fue brew switch openssl 1.0.2s. Pero eso fue todo. ¡Me has salvado, gracias!
antonio

3
Intentando esto pero me sigue diciendo que openssl no tiene una versión "1.0.2e" en la bodega. openssl no tiene una versión "1.0.2s" en la bodega.
James Parker

Antonio, James: cualquier versión anterior que tengas. Mi bodega tenía 1.0.2e, así que usé esto. Me alegro de que haya ayudado.
dsomnus

4
Muchas gracias! Para mí, su solución de cambiar a una versión anterior opensslfuncionó: brew switch openssl 1.0.2t estoy en Mac OS Catalina 10.15.3. Espero eso ayude.
viraj.kulkarni

25

De acuerdo con la respuesta de mastaBlasta. Trabajó para mi. Encontré el mismo problema que la descripción del tema.

Entorno: MacOS Sierra. Y yo uso Homebrew.

Mi solución:

  1. Reinstale openssl por brew uninstall openssl; brew install openssl
  2. De acuerdo con las sugerencias dadas por Homebrew, haga lo siguiente:

    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    export LDFLAGS="-L/usr/local/opt/openssl/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl/include"

3
Gracias, el truco es brew uninstall openssl, brew install openssl. Probé brew reinstall opensslque no tuvo ningún efecto. ¡Pero la desinstalación / instalación funciona!
Jeff Tian

6
tuve que correrbrew uninstall --ignore-dependencies openssl
elad silver

16

En Ubuntu, esto puede ayudar:

cd Python-3.6.2
./configure --with-ssl
make
sudo make install

4
¿Por qué tenemos que construir Python desde la fuente para esto? ¿No existe una solución que funcione con las distribuciones estándar de Python? Esperaría ingenuamente que agregar este módulo fuera posible sin anular el binario de Python, del cual no siempre conocemos fácilmente la ubicación de origen correspondiente, en un sistema en vivo que no esté recién instalado.
matanster

Intenté esto, no cambió nada
usuario

9
Recibo una advertencia que dice que esta opción no se reconoce
ma3oun

Tuve que agregar varios 'sudo' a esos comandos, ¡pero funcionaron donde fallaron otras respuestas!
Paco Abato


5

El problema probablemente se debe a que falta la biblioteca.

Antes de instalar Python 3.6, asegúrese de instalar todas las bibliotecas necesarias para Python.

$ sudo apt-get install build-essential checkinstall 
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Más información en Cómo instalar Python 3.6.0 en Ubuntu y LinuxMint


5

Si está en OSX y ha compilado Python desde la fuente:

Instalar openssl usando brew brew install openssl

Asegúrese de seguir las instrucciones que le da brew sobre cómo configurar su CPPFLAGSy LDFLAGS. En mi caso, estoy usando la openssl@1.1fórmula de preparación y necesito estas 3 configuraciones para que el proceso de compilación de Python se vincule correctamente a mi biblioteca SSL:

export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"

Suponiendo que la biblioteca esté instalada en esa ubicación.


sigue siendo el mismo problema
Gaurav Paliwal

Intente reinstalar pip
mastaBlasta

@GauravPaliwal, @mastaBlasta: Para mí, cambiar a una versión anterior opensslfuncionó: brew switch openssl 1.0.2t estoy en Mac OS Catalina 10.15.3. Espero eso ayude.
viraj.kulkarni

5

Encontré el mismo problema en Windows 10. Mi problema más específico se debe a la instalación de Anaconda. Instalé Anaconda y debajo del camino Path/to/Anaconda3/, viene el python.exe. Por lo tanto, no instalé Python en absoluto porque Anaconda incluye Python. Al utilizar PIP para instalar paquetes, me encontré con el mismo informe de errores, pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available..

La solución fue la siguiente:

1) puede descargar Python nuevamente en el sitio web oficial ;

2) Navega hasta el directorio donde "Python 3.7 (64-bit).lnk"se encuentra

3) import sslyexit()

4) escriba cmd, "Python 3.7 (64-bit).lnk" -m pip install tensorflowpor ejemplo.

Aquí está todo listo.


No es una solución, pero definitivamente hace el trabajo. Al menos te ayuda a instalar los departamentos que faltan. De lo que me di cuenta en mi máquina local, es que tenía entradas en conflicto en mi variable PATH para python (es decir, Anaconda 2.7 de 64 bits y Python 3.7 de 32 bits)
AP.

Además, para mejorar esta respuesta, puede almacenar la ruta absoluta en una variable y ejecutarla como: cmd /c $py .\main.py( Powershell ) o cmd /c %py% .\main.py( Dos ). Esto lo ejecutará en su shell existente y se puede programar
AP.

5

Si está en Windows y usa Anaconda , puede intentar ejecutar el comando "pip install ..." en Anaconda Prompt en lugar de cmd.exe, como sugiere el usuario willliu1995 aquí . Esta fue la solución más rápida para mí, que no requiere la instalación de componentes adicionales.


4

Intenté MUCHAS formas de resolver este problema y ninguna se resolvió. Actualmente estoy en Windows 10.

Lo único que funcionó fue:

  • Desinstalar Anaconda
  • Desinstalar Python (estaba usando la versión 3.7.3)
  • Instale Python nuevamente (recuerde marcar la opción para agregar automáticamente a PATH)

Luego descargué todas las bibliotecas que necesitaba usando PIP ... ¡y trabajé!

No sé por qué, o si el problema estaba relacionado de alguna manera con Anaconda.


3

para usuarios de osx brew

mi problema apareció relacionado con mi instalación de Python y se resolvió rápidamente reinstalando python3 y pip. Creo que comenzó a comportarse mal después de una actualización del sistema operativo, pero quién sabe (en este momento estoy en Mac OS 10.14.6)

brew reinstall python3 --force
# setup pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
# installa pkg successfully 
pip install pandas

¡Gracias por esta respuesta! En mi caso, los problemas comenzaron después de actualizar a Catalina (10.15.3), y descubrí que su primer paso brew reinstall python3 --forcefue suficiente: pipfuncionó nuevamente después de eso, no necesité reinstalar pip.
PLL

3

Puede hacer cualquiera de estos dos:

  1. Mientras instala Anaconda, seleccione la opción para agregar Anaconda a la ruta .

o

  1. Encuentre estas rutas (completas) en su carpeta de instalación de Anaconda y agréguelas a la variable de entorno :

\Anaconda

\ Anaconda \ Biblioteca \ mingw-w64 \ bin

\ Anaconda \ Library \ usr \ bin

\ Anaconda \ Biblioteca \ bin

\ Anaconda \ Scripts

\ anaconda \ Biblioteca

\ anaconda \ condabin

Agregue las rutas anteriores a la variable de sistema "Ruta" y no debería mostrar más el error :)


1
Una alternativa es usar el 'indicador anaconda' específico que tiene estas variables de entorno configuradas correctamente.
Tuula

2

Estaba teniendo el mismo problema y pude resolverlo con los siguientes pasos:

sudo yum install -y libffi-devel
sudo yum install openssl-devel
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
sudo tar xf Python-3.7.1.tar.xz
cd Python-3.7.1
sudo ./configure --enable-optimizations
# Install into /usr/local/bin/python3.7, don't overwrite global python bin
sudo make altinstall

dependiendo de las permanentes, es posible que no necesite sudo.

Results:
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-10.0.1 setuptools-39.0.1

ahora debería poder ejecutar

python3.7 -V 

y

pip3.7 -V

Al instalar paquetes:

pip3.7 install pandas

o dependiendo de las permanentes, también puede agregar la marca --user así:

pip3.7 install pandas --user

2

El sslmódulo es un contenedor TLS / SSL para acceder al socket Operation Sytem (OS) ( Lib / ssl.py ). Entonces, cuando el sslmódulo no está disponible, es probable que no tenga las bibliotecas OS OpenSSL instaladas o que esas bibliotecas no se hayan encontrado al instalar Python. Supongamos que es un caso posterior (también conocido como: ya tiene OpenSSL instalado, pero no están vinculados correctamente al instalar Python).

También asumiré que está instalando desde la fuente. Si está instalando desde un archivo binario (es decir, un archivo .exe de Windows) o un paquete (Mac .dmg o Ubuntu apt), no hay mucho que pueda hacer con el proceso de instalación.

Durante el paso de configurar su instalación de Python, debe especificar dónde se utilizará el sistema operativo OpenSSL para vincular:

# python 3.8 beta
./configure --with-openssl="your_OpenSSL root"

Entonces, ¿dónde encontrará su directorio OpenSSL instalado?

# ubuntu 
locate ssl.h | grep '/openssl/ssl.h'

/home/user/.linuxbrew/Cellar/openssl/1.0.2r/include/openssl/ssl.h
/home/user/envs/py37/include/openssl/ssl.h
/home/user/miniconda3/envs/py38b3/include/openssl/ssl.h
/home/user/miniconda3/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.0.2s-h7b6447c_0/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1b-h7b6447c_1/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1c-h7b6447c_1/include/openssl/ssl.h
/usr/include/openssl/ssl.h

Su sistema puede ser diferente al mío, pero como puede ver aquí, tengo muchas bibliotecas de openssl instaladas diferentes. En el momento de escribir este artículo, python 3.8 espera openssl 1.0.2 o 1.1:

Python requiere una libssl compatible con OpenSSL 1.0.2 o 1.1 con X509_VERIFY_PARAM_set1_host ().

Por lo tanto, deberá verificar cuál de esas bibliotecas instaladas puede usar para vincular, por ejemplo

/usr/bin/openssl version

OpenSSL 1.0.2g  1 Mar 2016
./configure --with-openssl="/usr"
make && make install

Es posible que deba probar algunas, o instalar una nueva, para encontrar la biblioteca que funcionaría para su Python y su sistema operativo.


1

En mi caso con Mac, eliminé /Applications/Python 3.7. porque ya tenía Python3.7 por brew install python3.

Pero fue un detonante del mensaje

pip está configurado con ubicaciones que requieren TLS / SSL, sin embargo, el módulo ssl en Python no está disponible.

Lo que hice en mi situación

  1. Descargué el instalador de macOS de 64 bits nuevamente y lo instalé.
  2. Haga doble clic en /Applications/Python3.6/Install Certificates.commandy /Applications/Python3.6/Update Shell Profile.command.
  3. Reiniciar mac
  4. Y no estoy seguro, pero posiblemente contribuyó a tener éxito pip.conf. Consulte la instalación de pip falla .

1

Finalmente resuelvo este problema. Estos son los detalles de mi env:
Versión de Python para instalar: 3.6.8
SO: Ubuntu 16.04.6 LTS
Acceso raíz: No

Algunas personas sugieren instalar libssl-dev, pero no funcionó para mí. ¡Sigo este enlace y lo arreglé!
En resumen, descargo, extraigo, construyo e instalo OpenSSL (openssl-1.1.1b.tar.gz). Luego, modifico el .bashrcarchivo siguiendo este enlace .
A continuación, descargo y extraigo Python-3.6.8.tgz. Edito Módulos / Setup.dist para modificar la ruta SSL (líneas alrededor de # 211). Lo hice ./configure --prefix=$HOME/opt/python-3.6.8, makey make install. Por último, modifico mi .bashrc. Tenga en cuenta que no incluyo --enable-optimizationsen ./configure.


0

En macos, configure Python 3.8.1 con el siguiente comando resolverá el problema, creo que también funcionaría en Linux.

./configure --enable-optimizations --with-openssl=/usr/local/opt/openssl@1.1/

cambie el parámetro dir según su sistema.


0

Si está en OSX y en caso de que las otras soluciones no funcionen para usted (como yo).

Puede intentar desinstalar python3 y actualizar pip3

brew uninstall --ignore-dependencies python3
pip3 install --upgrade pip   

Esto funcionó para mí;)


0

(¡NO en Windows!)

Esto me hizo arrancarme el pelo durante una semana, así que espero que esto ayude a alguien.

Intenté todo menos reinstalar Anaconda y / o Jupyter.

Preparar

  • AWS Linux
  • Anaconda 3-5.3.0 instalado manualmente
  • Python3 (3.7) se estaba ejecutando dentro de anaconda (es decir, ./anaconda3/bin/python )
  • también había /usr/bin/pythony /usr/bin/python3(pero estos no se estaban utilizando ya que la mayor parte del trabajo se realizó en la terminal de Jupyter)

Reparar

En la terminal de Jupyter:

cp /usr/lib64/libssl.so.10 ./anaconda3/lib/libssl.so.1.0.0

cp /usr/lib64/libcrypto.so.10 ./anaconda3/lib/libcrypto.so.1.0.0

¿Qué provocó esto?

Entonces, todo esto funcionó hasta que intenté hacer un conda install conda-forge

No estoy seguro de lo que sucedió, pero conda debe haberse actualizado opensslen la caja (supongo), así que después de esto, todo se rompió.

Básicamente, sin que yo lo supiera, conda había actualizado openssl, pero de alguna manera eliminó las bibliotecas antiguas y las reemplazó con libssl.so.1.1y libcrypto.so.1.1.

Python3, supongo, fue compilado para buscar libssl.so.1.0.0

Al final, la clave del diagnóstico fue esta:

python -c "import ssl; print (ssl.OPENSSL_VERSION)"

dio la pista library "libssl.so.1.0.0" not found

La gran suposición que hice es que la yumversión de ssl es la misma que laconda versión, por lo que simplemente cambiar el nombre del objeto compartido podría funcionar, y lo hizo.

Mi otra solución fue volver a compilar Python, reinstalar anaconda, etc., pero al final me alegro de no haberlo necesitado.

Espero que esto les ayude.


0

En el caso de usar pyenvpara administrar las instalaciones de Python en Mac OS Catalina, opensslprimero tuve que instalar con brew y luego después de esa ejecución pyenv install 3.7.8que parecía construir la instalación de Python usando el opensslfrom homebrew (incluso dijo como tal en el resultado de la instalación). Entonces pyenv global 3.7.8y me fui.


0

Pude solucionar esto actualizando la versión de Python en este archivo. pyenv: la versión `3.6.5 'no está instalada (establecida por /Users/taruntarun/.python-version) Aunque tenía instalada la última versión, mi comando seguía usando la versión anterior 3.6.5

Pasando a la versión 3.7.3


-1

Tuve el mismo problema durante los últimos dos días y solo lo he solucionado en este momento.

Intenté usar la --trust-hostopción con DigiCert_High_Assurance_EV_Root_CA.pemno funcionó, no pude instalar el módulo ssl (dice que no se puede instalar para versiones de Python superiores a 2.6), configurar la $PIP_CERTvariable tampoco lo solucionó y lo tuve libssl1.0.2e libssl1.0.0instalado. También vale la pena mencionar que no tenía un ~/.pip/pip.confarchivo y que crearlo tampoco resolvió el error.

Lo que finalmente lo resolvió fue instalar python3.6 de makenuevo. Descargar el Python-3.6.0.tgz desde el sitio web, ejecutar configurea continuación make, make testy make install. Espero que funcione para ti.


2
Lo siento, pero tuve que votar en contra debido a esto simplemente indicando que debe repetir los mismos pasos que causaron este error. ¡No sé cómo esperaría ejecutar los mismos comandos en la misma fuente de Python y obtener resultados diferentes!
Jamie Lindsey

-1

La documentación de Python es realmente muy clara, y seguir las instrucciones funcionó, mientras que otras respuestas que encontré aquí no estaban solucionando este problema.

  1. primero, instale python 3.xx desde la fuente usando, por ejemplo, con la versión 3.6.2 https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

  2. asegúrese de tener openssl instalado ejecutando brew install openssl

  3. descomprímalo y muévase al directorio de Python: tar xvzf Python-3.6.2.tar.xz && cd Python-3.6.2

  4. entonces, si la versión de Python es <3.7, ejecuta

CPPFLAGS="-I$(brew --prefix openssl)/include" \ LDFLAGS="-L$(brew --prefix openssl)/lib" \ ./configure --with-pydebug 5. finalmente, ejecute make -s -j2( -ses la bandera silenciosa, -j2le dice a su máquina que use 2 trabajos)


j es el mnemónico de "trabajos" que es el número de procesos que se ejecutan en paralelo ejecutan la compilación. En cuanto a la bandera s, todavía genera advertencias, pero sin el ruido adicional de los niveles de información / depuración. Estos indicadores se utilizan en las instrucciones de los documentos de Python.
pglaser

-1

Tuve el mismo problema al intentar instalar python3.7 en una máquina ubuntu14.04. El problema era que tenía algunas carpetas personalizadas en mi PKG_CONFIG_PATH y en mi LD_LIBRARY_PATH, lo que impedía que el proceso de compilación de Python encontrara las bibliotecas openssl del sistema.

así que intente borrarlos y vea qué sucede:

export PKG_CONFIG_PATH=""
export LD_LIBRARY_PATH=""

2
En realidad, esto arruinaría el día de alguien si tiene cosas útiles en esas variables de entorno
matanster

-1

Ok, la última respuesta a esto, a partir de ahora no use Python 3.8 , use solo 3.7 o menos, porque la mayoría de las bibliotecas no se instalan con el error anterior


Hasta donde yo sé, Python usa paquetes subyacentes del sistema operativo. Cosas como gcc, openssly zlib. Por lo tanto, es importante instalar estos requisitos previos antes de compilar Python, especialmente cuando se usa en Linux.
Stephen

@ surfer190 Uso Windows, pero lo que dijiste podría ser cierto para ambos, supongo
Ujju
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.