Повторна установка локона
Я випробував усі пропозиції з цієї дискусії, але ніхто не працював у мене. Як рішення я перевстановив 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.Re/Установка за допомогою 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 time-time ssl backend ( gnutls ) відрізняється від back-ssl backend часу компіляції ( openssl )
Частина 2. Установка із смоли
Після того, як попередній метод не працював, я вирішив встановити 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. Повторне встановлення кучеря та кучеря
Нарешті, я зрозумів, що pycurl не встановлюється нормально в середовище, оскільки глобальний curl та libcurl компілюються за допомогою горіхів.
Перед початком перевірте:
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
Compiler: 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'