Reinstalação do curl
Tentei todas as sugestões desta discussão, mas ninguém trabalhou para mim. Como solução, reinstalei o curl e o curlib. Depois disso, fui capaz de instalar o pycurl com suporte a ssl dentro do ambiente.
No início:
'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/Instalação com pip
Em primeiro lugar, removi o pycurl do virtualenv usando o pip, conforme sugerido nas respostas anteriores:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
A ideia aqui é que o pacote foi armazenado em cache e nós apenas o reinstalamos com a opção openssl.
Também tentei recompilar pycurl com pip usando:
pip install pycurl --compile pycurl --no-cache
..mas teve o mesmo erro após executar:
python
import pycurl
pycurl.version
ImportError: pycurl: libcurl backend ssl de tempo de link ( gnutls ) é diferente de backend ssl de tempo de compilação ( openssl )
Parte 2. Instalação do alcatrão
Depois que o método anterior não funcionou, decidi instalar o pycurl do tar com:
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
Ele instalou o pycurl globalmente, mas não no virtualenv. Também não verifiquei se foi instalado com suporte SSL ou não mas acho que ainda sem SSL.
Parte 3. Reinstalação de curl e curllib
Finalmente entendi que o pycurl não é instalado normalmente no ambiente porque o global curl e o libcurl são compilados com o gnutls.
Antes de começar, verifique com:
curl-config --configure
Uma das linhas de saída será
'--without-ssl' '--with-gnutls'
Para recompilar:
Em primeiro lugar, remova o curl:
sudo apt-get purge curl
Instale todas as dependências de compilação necessárias para curl
sudo apt-get build-dep curl
Obtenha o libcurl mais recente (em 20 de dezembro de 2016)
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
As etapas usuais para construir um aplicativo a partir da fonte
./configure
./make
sudo make install
Se o openssl estiver instalado corretamente, o configure o encontrará automaticamente. O resultado será:
versão curl: 7.51.0
Configuração do host: x86_64-pc-linux-gnu
Instalar prefixo: / usr / local
Compilador: gcc
SSL support: enabled (OpenSSL) ...
Resolva quaisquer problemas de caches de localização lib de nível C ("cache de biblioteca compartilhada")
sudo ldconfig
Agora tente reinstalar o pycurl no ambiente:
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"
O resultado deve 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'