Je travaille sur un serveur distant. Lorsque j'essaie d'installer quoi que ce soit avec pip dans mon environnement virtuel, un message d'erreur s'affiche:
(venv) [barta@bivoj program]$ pip install -r requirements.txt
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting joblib==0.11 (from -r requirements.txt (line 1))
Could not fetch URL https://pypi.python.org/simple/joblib/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
Tout fonctionne bien avec Python 2.7. Puis-je résoudre ce problème moi-même (je n'ai pas d'accès root) ou dois-je contacter l'administrateur?
J'ai d'abord eu ce problème lorsque j'ai installé Python 3.6 dans mon dossier personnel. J'ai pensé que le problème venait peut-être de son dossier personnel. J'ai donc demandé une nouvelle installation de Python 3.6.
J'ai envisagé de changer le fichier setup.py et de le réinstaller chez moi, comme suggéré ici par Claudio:
mais je n'ai trouvé aucun dossier openssl. Il y a openssl dans/usr/bin, mais ce n'est pas un répertoire. J'ai cherché le fichier ssl.h, mais je ne l'ai trouvé nulle part.
On dirait que vous avez construit python à partir de la source sans la présence de libssl-dev
.
Courir:
Sudo apt-get install libssl-dev
Sudo ./configure
Sudo make altinstall
Testé sous Ubuntu 16.04/18.04
Dans Python-3.6.4/Modules/Setup, décommentez les lignes suivantes:
# SSL=/usr/local/ssl
# _ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
Recompilez ensuite le paquet:
$ Sudo ./configure --enable-optimizations
$ Sudo make altinstall
Assurez-vous également que libssl-dev
est installé (en tout cas, il s'agit du paquetage pour debian).
Cela fonctionne aussi pour Python-3.7.x.
Voici comment j'ai fait:
Sudo apt-get install libssl-dev
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -xvf Python-3.6.5.tgz
cd Python-3.6.5/
./configure
Sudo make
Sudo make install
J'ai la même erreur mais en fait, j'ai créé python environment à l'aide de la dernière version de python2.7.13 et cette version python a été installée via source :
./configure --prefix /usr/bin/python2.7.13
make altinstall
Puis en créant virtualenv:
virtualenv --python=/usr/bin/python2.7.13/bin/python2.7 py2.7.13env
Après avoir passé beaucoup de temps, j'ai trouvé qu'il manquait une bibliothèque nommée libreadline6-dev
. Alors installé le:
Sudo apt-get install libreadline6-dev
et répété les étapes compile et make install telles que mentionnées ci-dessus et a de nouveau créé l'env virtuel. Tout a bien fonctionné cette fois!