web-dev-qa-db-fra.com

"Le module SSL dans Python n'est pas disponible" lors de l'installation du package avec pip3

J'ai installé Python 3.4 et Python 3.6 sur mon ordinateur local, mais je ne parviens pas à installer les packages avec pip3.

Lorsque j'exécute pip3 install <package>, le message d'erreur lié à SSL suivant s'affiche:

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>

Comment puis-je réparer mon installation Python3.x afin de pouvoir installer des packages avec pip install <package>?

57
Harukaze

Guide étape par étape pour installer Python 3.6 et pip3 sous Ubuntu

  1. Installez les packages nécessaires pour Python et ssl: $ Sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

  2. Téléchargez et décompressez "Python-3.6.8.tar.xz" à partir de https://www.python.org/ftp/python/ dans votre répertoire personnel.

  3. Ouvrez le terminal dans ce répertoire et exécutez: $ ./configure

  4. Construire et installer: $ Sudo make && Sudo make install

  5. Installez les paquets avec: $ pip3 install package_name

62
arsho

Si vous êtes sur 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
49
The Aelfinn

Si vous utilisez Windows et utilisez anaconda , cela a fonctionné pour moi:

J'ai essayé beaucoup d'autres solutions qui ne fonctionnaient pas (environnement PATH, changements de variables ...)

Le problème peut être causé par des DLL du dossier Windows\System32 (par exemple, libcrypto-1_1-x64.dll ou libssl-1_1-x64.dll ou d'autres) placées là par d'autres logiciels.

Le correctif consistait à installer openSSL à partir de https://slproweb.com/products/Win32OpenSSL.html , qui remplace les dll par des versions plus récentes.

26
juergi

D'accord avec la réponse de mastaBlasta. Travaillé pour moi J'ai rencontré le même problème que la description du sujet.

Environnement: MacOS Sierra. Et j'utilise Homebrew.

Ma solution:

  1. Réinstallez openssl par brew uninstall openssl, brew install openssl;
  2. Selon les indications données par Homebrew, procédez comme suit:

    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"

10
nathanyu

Le problème probablement causé par la bibliothèque manquante.

Avant d'installer python 3.6, assurez-vous d'installer toutes les bibliothèques requises pour 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

Plus d'informations dans Comment installer Python 3.6.0 sur Ubuntu & LinuxMint

7
PengShaw

Dans Ubuntu, cela peut aider:

cd Python-3.6.2
./configure --with-ssl
make
Sudo make install
7
tingtinghuang

J'ai rencontré le même problème sur Windows 10. Mon problème très spécifique est dû à mon installation d'Anaconda. J'ai installé Anaconda et sous le chemin Path/to/Anaconda3/, il y a le python.exe. Ainsi, je n'ai pas du tout installé python car Anaconda inclut du python. Lors de l'utilisation de pip pour installer des packages, j'ai trouvé le même rapport d'erreur, pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available..

La solution était la suivante:

1) vous pouvez télécharger python à nouveau sur le site officiel site web ;

2) Naviguez jusqu'au répertoire où se trouve "Python 3.7 (64-bit).lnk"

3) import ssl et exit()

4) tapez cmd, "Python 3.7 (64-bit).lnk" -m pip install tensorflow par exemple.

Ici, vous êtes tous ensemble.

5
Yanqi Huang

Si vous utilisez Windows et utilisez Anaconda , vous pouvez essayer d'exécuter la commande "pip install ..." dans Anaconda Prompt au lieu de cmd.exe, en tant qu'utilisateur willliu1995. suggère ici . C'était la solution la plus rapide pour moi, qui ne nécessite pas l'installation de composants supplémentaires.

4
Butterfly

Si vous êtes sur OSX et avez compilé python à partir du source:

Installez openssl en utilisant brew brew install openssl

Assurez-vous de suivre les instructions données par votre café concernant le réglage de votre CPPFLAGS et LDFLAGS. Dans mon cas, j’utilise la formule de brassage [email protected] et j’ai besoin de ces 3 paramètres pour que le processus de construction python se connecte correctement à ma bibliothèque SSL:

export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"

En supposant que la bibliothèque est installée à cet emplacement.

4
mastaBlasta

J'ai essayé BEAUCOUP de moyens de résoudre ce problème et aucun n'a été résolu. Je suis actuellement sur Windows 10.

La seule chose qui a fonctionné était:

  • Désinstaller Anaconda
  • Désinstaller Python (j'utilisais la version 3.7.3)
  • Installez à nouveau Python (n'oubliez pas de cocher l'option d'ajouter automatiquement à PATH)

Ensuite, j'ai téléchargé toutes les librairies dont j'avais besoin avec PIP ... et j'ai travaillé!

Je ne sais pas pourquoi, ou si le problème était lié à Anaconda.

1
João Ignacio

J'avais le même problème et j'ai pu résoudre le problème en procédant comme suit:

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

selon les permanentes, vous n’avez peut-être pas besoin de Sudo.

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

devrait maintenant pouvoir courir

python3.7 -V 

et

pip3.7 -V

Lors de l'installation des packages:

pip3.7 install pandas

ou selon les permanentes, vous pouvez aussi ajouter le drapeau --user comme ceci:

pip3.7 install pandas --user
1
RubenD

Le module ssl est un wrapper TLS/SSL permettant d’accéder au socket Operation Sytem (OS) ( Lib/ssl.py ). Ainsi, lorsque le module ssl n'est pas disponible, il est probable que les bibliothèques OS OpenSSL ne soient pas installées ou que ces bibliothèques ne soient pas trouvées lors de l'installation de Python. Supposons qu'il s'agit d'un cas ultérieur (alias: OpenSSL est déjà installé, mais ils ne sont pas correctement liés lors de l'installation de Python).

Je vais aussi supposer que vous installez à partir de la source. Si vous effectuez l'installation à partir d'un fichier binaire (fichier Window .exe) ou d'un package (Mac .dmg ou Ubuntu apt), vous ne pouvez pas faire grand chose avec le processus d'installation.

Lors de la configuration de votre installation python, vous devez spécifier où le système d'exploitation OpenSSL sera utilisé pour la liaison:

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

Alors, où trouverez-vous votre répertoire OpenSSL installé?

# 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

Votre système peut être différent du mien, mais comme vous le voyez ici, j'ai de nombreuses bibliothèques OpenSL installées. Au moment d'écrire ces lignes, python 3.8 attend openssl 1.0.2 ou 1.1:

Python nécessite une libssl compatible OpenSSL 1.0.2 ou 1.1 avec X509_VERIFY_PARAM_set1_Host ().

Donc, vous devez vérifier laquelle de ces bibliothèques installées vous pouvez utiliser pour lier, par exemple

/usr/bin/openssl version

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

Vous devrez peut-être en essayer quelques-unes ou en installer une nouvelle pour trouver la bibliothèque qui fonctionnerait pour votre Python et votre système d'exploitation.

0
bizi

J'avais le même problème depuis deux jours et je ne l'ai résolu que maintenant.

J'avais essayé d'utiliser l'option --trust-Host avec le DigiCert_High_Assurance_EV_Root_CA.pem ne fonctionnait pas, je ne pouvais pas installer le module ssl (cela indique qu'il ne peut pas être installé pour python versions supérieures à 2.6) , régler la variable $PIP_CERT ne l’a pas résolu non plus et j’ai installé libssl1.0.2 et libssl1.0.0. Il convient également de mentionner que je n’avais pas de fichier ~/.pip/pip.conf, et que le créer ne résolvait pas non plus le bogue.

Ce qui a finalement résolu le problème, c’est d’installer à nouveau python3.6 avec make. Téléchargez le fichier Python-3.6.0.tgz à partir du site Web, exécutez configure puis make, make test et make install. J'espère que ça marche pour toi.

0
E.C Lobo

J'ai eu le même problème en essayant d'installer python3.7 sur une machine ubuntu14.04. Le problème était que j'avais quelques dossiers personnalisés dans mon PKG_CONFIG_PATH et dans mon LD_LIBRARY_PATH, ce qui empêchait le processus de construction python de trouver les bibliothèques openssl du système.

alors essayez de les effacer et de voir ce qui se passe:

export PKG_CONFIG_PATH=""
export LD_LIBRARY_PATH=""
0
Loki