Réinstallation de curl
J'ai essayé toutes les suggestions de cette discussion mais personne n'a fonctionné pour moi. Comme solution, j'ai réinstallé curl et curlib. Après cela, j'ai pu installer pycurl avec le support ssl dans l'environnement.
Au début:
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
Partie 1: Ré / Installation avec pip
Tout d'abord, j'ai supprimé pycurl de virtualenv en utilisant pip comme cela a été suggéré dans les réponses précédentes:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
L'idée ici est que le package a été mis en cache et que nous le réinstallons simplement avec l'option openssl.
J'ai également essayé de recompiler pycurl avec pip en utilisant:
pip install pycurl --compile pycurl --no-cache
.. mais a eu la même erreur après l'exécution:
python
import pycurl
pycurl.version
ImportError: pycurl: le backend ssl link-time libcurl ( gnutls ) est différent du backend ssl lors de la compilation ( openssl )
Partie 2. Installation depuis tar
Après que la méthode précédente n'a pas fonctionné, j'ai décidé d'installer pycurl à partir de tar avec:
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
sudo tar -xzvf pycurl-7.43.0.tar.gz
cd pycurl-7.43.0/
sudo python setup.py --with-ssl install
Il a installé pycurl dans le monde entier mais pas dans virtualenv. Je n'ai pas non plus vérifié s'il était installé avec le support SSL ou non, mais je pense que toujours sans SSL.
Partie 3. Réinstallation de curl et curllib
Enfin, j'ai compris que pycurl ne s'installe pas normalement dans l'environnement car global curl et libcurl sont compilés avec gnutls.
Avant de commencer, vérifiez-le avec:
curl-config --configure
L'une des lignes de sortie sera
'--without-ssl' '--with-gnutls'
Pour le recompiler:
Supprimez d'abord curl:
sudo apt-get purge curl
Installez toutes les dépendances de construction nécessaires pour curl
sudo apt-get build-dep curl
Obtenir la dernière version (au 20 décembre 2016) libcurl
mkdir ~/curl
wget http://curl.haxx.se/download/curl-7.51.0.tar.bz2
tar -xvjf curl-7.51.0.tar.bz2
cd curl-7.51.0
Les étapes habituelles pour créer une application à partir de la source
./configure
./make
sudo make install
Si openssl est correctement installé, configure le trouvera automatiquement. La sortie sera:
curl version: 7.51.0
Configuration de l'hôte: x86_64-pc-linux-gnu
Préfixe d'installation: / usr / local
Compilateur: gcc
SSL support: activé (OpenSSL) ...
Résolvez tous les problèmes de caches d'emplacement de bibliothèque de niveau C ("cache de bibliothèque partagée")
sudo ldconfig
Maintenant, essayez de réinstaller pycurl dans l'environnement:
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
pip install pycurl-7.43.0.tar.gz --global-option="--with-openssl"
Le résultat devrait être:
python
import pycurl
pycurl.version
'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'