Переустановка завитка
Я пробовал каждое предложение из этого обсуждения, но никто не работал у меня. В качестве решения я переустановил 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
Одна из выходных строк будет
'--без-ssl' '--с-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'
person
Alexander Tyapkov
schedule
21.12.2016