Reinstalación de rizo
Probé todas las sugerencias de esta discusión, pero ninguna funcionó para mí. Como solución, he reinstalado curl y curlib. Después de eso, pude instalar pycurl con soporte ssl dentro del entorno.
Al principio:
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
Parte 1.Re / Instalación con pip
En primer lugar, eliminé pycurl de virtualenv usando pip como se sugirió en las respuestas anteriores:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
La idea aquí es que el paquete se almacenó en caché y simplemente lo reinstalamos con la opción openssl.
También intenté recompilar pycurl con pip usando:
pip install pycurl --compile pycurl --no-cache
..pero tuvo el mismo error después de ejecutar:
python
import pycurl
pycurl.version
ImportError: pycurl: libcurl link-time ssl backend ( gnutls ) es diferente del backend ssl en tiempo de compilación ( openssl )
Parte 2. Instalación desde alquitrán
Después de que el método anterior no funcionó, decidí instalar pycurl desde tar con:
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
Ha instalado pycurl globalmente pero no dentro de virtualenv. Tampoco verifiqué si estaba instalado con soporte SSL o no, pero creo que todavía sin ssl.
Parte 3. Reinstalación de curl y curllib
Finalmente entendí que pycurl no se instala normalmente en el entorno porque global curl y libcurl se compilan con gnutls.
Antes de empezar compruébalo con:
curl-config --configure
Una de las líneas de salida será
'--without-ssl' '--with-gnutls'
Para recompilarlo:
En primer lugar, elimine el rizo:
sudo apt-get purge curl
Instale las dependencias de compilación necesarias para curl
sudo apt-get build-dep curl
Obtenga la última versión (a partir del 20 de diciembre de 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
Los pasos habituales para crear una aplicación desde la fuente
./configure
./make
sudo make install
Si openssl se instaló correctamente, configure lo encontrará automáticamente. La salida será:
versión curl: 7.51.0
Configuración del host: x86_64-pc-linux-gnu
Prefijo de instalación: / usr / local
Compilador: gcc
Soporte SSL: habilitado (OpenSSL) ...
Resolver cualquier problema de cachés de ubicación de bibliotecas de nivel C ("caché de biblioteca compartida")
sudo ldconfig
Ahora intente reinstalar pycurl dentro del entorno:
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"
El resultado debería ser:
python
import pycurl
pycurl.version
'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'