Переустановка локона
Я пробовал все предложения из этого обсуждения, но ни один из них не помог мне. В качестве решения я переустановил curl и curlib. После этого я смог установить pycurl с поддержкой ssl внутри среды.
В начале:
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
Часть 1. Повтор / установка с помощью pip
Во-первых, я удалил pycurl из virtualenv с помощью pip, как было предложено в предыдущих ответах:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
Идея здесь в том, что пакет был кеширован, и мы просто повторно установили его с опцией openssl.
Я также попытался перекомпилировать pycurl с помощью pip, используя:
pip install pycurl --compile pycurl --no-cache
..но была такая же ошибка после запуска:
python
import pycurl
pycurl.version
ImportError: pycurl: libcurl бэкэнд SSL во время компоновки ( gnutls ) отличается от бэкэнд SSL во время компиляции ( openssl )
Часть 2. Установка из tar
После того, как предыдущий метод не сработал, я решил установить pycurl из tar с помощью:
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
Pycurl установлен глобально, но не в virtualenv. Я также не проверял, был ли он установлен с поддержкой SSL или нет, но думаю, что все еще без ssl.
Часть 3. Переустановка curl и curllib
Наконец я понял, что pycurl обычно не устанавливается в среду, потому что глобальные curl и libcurl скомпилированы с помощью gnutls.
Перед началом проверьте это с помощью:
curl-config --configure
Одна из выходных строк будет
'--without-ssl' --with-gnutls '
Чтобы перекомпилировать его:
Сначала удалите завиток:
sudo apt-get purge curl
Установите все зависимости сборки, необходимые для curl
sudo apt-get build-dep curl
Получить последнюю версию (по состоянию на 20 декабря 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
Обычные шаги для создания приложения из исходного кода
./configure
./make
sudo make install
Если openssl установлен правильно, configure найдет его автоматически. Результат будет:
версия curl: 7.51.0
Настройка хоста: x86_64-pc-linux-gnu
Префикс установки: / usr / local
Компилятор: gcc
Поддержка SSL: включена (OpenSSL) ...
Устранение любых проблем с кешами расположения библиотек C-уровня («кеш общей библиотеки»)
sudo ldconfig
Теперь попробуйте переустановить pycurl в среде:
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"
Результат должен быть:
python
import pycurl
pycurl.version
'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'