Ошибка серверной части SSL при использовании OpenSSL

Я пытался установить pycurl в virtualenv с помощью pip и получил эту ошибку.

ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)

Я читал документацию, в которой говорилось, что "Чтобы исправить это, вам нужно сообщить setup.py, какой серверный модуль SSL используется" ( source) хотя я не знаю, как это сделать, так как я установил pycurl с помощью pip.

Как указать серверную часть SSL при установке pycurl с помощью pip?

Спасибо


person helloworld2013    schedule 13.01.2014    source источник
comment
Какая у вас ОС?   -  person Evgenii    schedule 05.06.2018


Ответы (24)


Прочитав их файл УСТАНОВКИ, я смог решить свою проблему, установив переменную среды и переустановив

  • удалить существующую pycurl установку

    pip uninstall pycurl

  • экспортировать переменную с вашим бэкэндом ssl времени ссылки (который выше openssl)

    export PYCURL_SSL_LIBRARY=openssl

  • затем переустановите pycurl без кэша.

    pip install pycurl --no-cache-dir

Там может быть другое решение, но это отлично работает для меня при установке virtualenv и pip.

person helloworld2013    schedule 13.01.2014
comment
Спасибо, PYCURL_SSL_LIBRARY=openssl работает отлично! - person thnee; 19.01.2014
comment
Для пользователей mac os x: не забывайте использовать set -x PYCURL_SSL_LIBRARY openssl вместо export PYCURL_SSL_LIBRARY=openssl, если вы используете консоль fish вместо bash. - person Serge; 19.01.2015
comment
pip установить pycurl --no-cache-dir - person Shuguang Yang; 10.03.2016
comment
Спасибо. Я просмотрел ряд возможных решений этой проблемы. Это решение сработало с первого раза. - person Matthew Setter; 18.06.2018
comment
пошаговый пример установки virtualenv ="nofollow noreferrer">yippeecode.com/view-code/343QWQT144/ - person helloworld2013; 28.02.2019
comment
За исключением того, что в моем случае пришлось использовать export PYCURL_SSL_LIBRARY=nss, потому что это то, что было установлено в моей системе. - person caram; 18.12.2019

Ответ helloworld2013 правильный, но ключ соответствует библиотеке SSL, которую ожидает pycurl. Ошибка будет примерно такой:

pycurl: серверная часть libcurl ssl времени компоновки (‹library›) отличается от серверной части ssl времени компиляции (‹library› или «нет/другое")

Чтобы исправить это, вы должны использовать библиотеку, которую ожидает pycurl. В моем случае моя ошибка была «pycurl: бэкэнд libcurl link-time ssl (nss) отличается от бэкэнда ssl во время компиляции (openssl)», поэтому мое исправление было :

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
pip install pycurl
person DrStrangepork    schedule 16.04.2014
comment
Блестящий. Это должно получить больше голосов. Оригинальный ответ относился к некоторым машинам. Это более общий способ исправить это в зависимости от вашей платформы. - person Nishant; 07.06.2014
comment
хм, это не сработало для меня на Mac. Похоже, что PYCURL_SSL_LIBRARY полностью игнорируется. Серверная часть ssl времени компиляции для меня всегда (нет/другое), хотя echo PYCURL_SSL_LIBRARY дает openssl. - person Edward Newell; 08.03.2015
comment
У меня сработало на Fedora 21 с бэкендом nss, спасибо. - person therealrootuser; 29.04.2015
comment
как и @EdwardNewell, это исправление не сработало для меня в Scientific Linux (Rhel), хотя я указал nss для PYCURL_SSL_LIBRARY, бэкэнд остался (нет/другое) - person Yondaime008; 27.10.2015
comment
У меня это не сработало на RHEL 6.7. Серверная часть времени компоновки была указана как nss, а серверная часть времени компиляции — как (нет/другое). Что сработало, так это указать --global-option=--with-nss, как указано в ответе 1424462. - person Andreas Maier; 31.05.2016
comment
На Mac я удалил pycurl и установил с флагами: pip install --global-option="--with-openssl" --global-option=build_ext --global-option="-L/usr/local/opt/openssl/lib" --global-option="-I/usr/local/opt/openssl/include" pycurl - person eigenein; 03.01.2018
comment
Это работало, но только со следующими параметрами: pip install pycurl --compile --no-cache-dir в CentOS 7.3. - person Robert Yi; 06.02.2018

С macOS 10.13, установленным openSSL и virtualenv мне удалось:

# cd to your virtualenv, then…
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include
pip install pycurl --compile --no-cache-dir
person Michael Wilson    schedule 15.09.2017
comment
Да, в MacOS 10.13.1 (High Sierra) это помогло! Большое спасибо! Чтобы переустановить openssl: brew reinstall openssl - person Denis Arnaud; 11.11.2017
comment
Я исправил свою проблему с ним. Спасибо :) - person JeongjinKim; 01.12.2017
comment
Исправлена ​​проблема на Mac OSX 10.13.4! Спасибо. - person user1192748; 05.04.2018
comment
Благодарю вас! Также исправил мою проблему. Mac OSX 10.13.4 - person Steven Church; 08.05.2018
comment
Запуск pip с этими параметрами работал у меня без установки openssl и сохранения libressl: pip install pycurl --global-option="build_ext" --global-option="-I/usr/local/opt/openssl/include" - person Kerim Gökarslan; 09.11.2018
comment
Попробовав команды Майкла Уилсона, я попробовал import pycurl и получил: ImportError: pycurl: libcurl link-time ssl backend (none/other) is different from compile-time ssl backend (openssl) - person Daryl Spitzer; 18.01.2019
comment
И я получил то же самое ImportError: pycurl: libcurl link-time ssl backend (none/other) is different from compile-time ssl backend (openssl) после того, как попробовал команду pip install Керима Гокарслана выше. - person Daryl Spitzer; 18.01.2019
comment
Дэрил жаль это слышать! Это снова сработало для меня в Мохаве, поэтому я не уверен, что случилось. - person Michael Wilson; 18.01.2019
comment
Наконец-то я нашел то, что работает. Я создал ответ ниже. - person Daryl Spitzer; 18.01.2019
comment
Спас мне жизнь тоже. - person Daniel; 21.06.2019

С pip 7.1 вы можете поместить в свой файл требований следующее:

pycurl==7.19.5.1 --global-option="--with-nss"

Просто замените nss соответствующей серверной библиотекой ssl.

person maharg101    schedule 09.07.2015
comment
Это решение лучше, чем экспорт var и переустановка, потому что его можно использовать совместно в файле requirements.txt и его не нужно повторять для каждого пользователя. - person dfarrell07; 08.03.2016
comment
экспорт не работал у меня в CentOS 7. Но сработала глобальная опция. Спасибо! - person Aaron Nguyen; 28.04.2017
comment
Мне пришлось объединить ваше решение и решение @Michael Wilson, чтобы заставить его работать на macOS. Похоже на проблему с криптографией — обсуждение здесь: github.com/pyca/cryptography/issues/3489< /а> - person kip2; 17.07.2018

Способ исправления pycurl после обновления Mac OS High Sierra:

  1. Переустановите библиотеки curl, чтобы использовать OpenSSL вместо SecureTransport

    brew install curl --with-openssl
    
  2. Установите pycurl с правильной средой сборки и путями

    export PYCURL_SSL_LIBRARY=openssl
    pip uninstall pycurl 
    pip install --no-cache-dir --global-option=build_ext --global-option="-L/usr/local/opt/openssl/lib" --global-option="-I/usr/local/opt/openssl/include" --user pycurl
    
person pallly    schedule 04.01.2018
comment
У меня работало на High Sierra (используя virtualenv). - person djangoat; 08.03.2018
comment
Да! Также см. эту статью cscheng.info/2018/ 26/01/ - person somecallitblues; 13.04.2018
comment
У меня работало на High Sierra (с использованием virtualenv), но мне пришлось удалить флаг --user - person user495732 Why Me; 11.10.2018
comment
Большое тебе спасибо!! Это было невероятно полезно. Запустив High Sierra и потратив на это пару часов, это единственное решение, которое сработало :) - person Alessandro; 12.10.2018
comment
Когда я использовал флаг --user, как указано выше, я получил: Can not perform a '--user' install. User site-packages are not visible in this virtualenv. - person Daryl Spitzer; 18.01.2019
comment
После выполнения вышеописанного без --user, похоже, он успешно установился. Но когда я делаю import pycurl, я получаю: ImportError: pycurl: libcurl link-time ssl backend (none/other) is different from compile-time ssl backend (openssl) - person Daryl Spitzer; 18.01.2019
comment
Наконец-то я нашел то, что работает. Я создал ответ ниже. - person Daryl Spitzer; 18.01.2019

Это сработало для меня:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
easy_install pycurl

Ничего из этого не сработало для меня (обратите внимание, что разница заключается просто в easy_install и pip):

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl
#xor
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.19.3.1.tar.gz
#...
python setup.py --with-[nss|openssl|ssl|gnutls] install
person JoelBondurant    schedule 25.02.2014
comment
Вариант easy_install был единственным, который сработал. Я не понимаю, почему это так сложно. Мне нужно export PYCURL_SSL_LIBRARY=openssl. Мой один сообщил об отсутствии/другом для скомпилированной библиотеки. - person CMCDragonkai; 10.05.2016
comment
Просто столкнулся с этой проблемой, и это решение было единственным, которое сработало для меня. - person Boudewijn Aasman; 13.01.2017
comment
По моему опыту, pip не полностью удаляет старую версию pucurl, которая была установлена ​​вместе с ОС (в моем случае Centos7.2). Pip не трогал файлы /usr/lib64/python2.7/site-packages/pycurl.so и egg-info из более ранней версии. Easy_install, с другой стороны, уничтожил их в дополнение к размещению яйца pycurl в пакетах сайтов. - person sokhaty; 02.12.2017
comment
Угу, пробовал все вышеперечисленное, не помогло. Это сработало для меня, когда мое исходное сообщение об ошибке было ``` ImportError: pycurl: бэкэнд libcurl link-time ssl (openssl) отличается от бэкэнда ssl во время компиляции (none/other)``` - person James McCormac; 13.12.2017

У меня была эта проблема в течение нескольких дней. Наконец, с помощью других ответов здесь (в основном Александра Тяпкова) я заработал на AWS Elastic Beanstalk.

Ручная установка (подключение по SSH):

sudo pip uninstall pycurl
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
sudo pip install pycurl-7.43.0.tar.gz --global-option="--with-nss"

ВАЖНО: обратите внимание, что вы должны убедиться, что используете текущую версию Python и PIP, иначе вы можете компилировать его для Python 2.x и использовать v3.x.

Автоматическая установка в Elastic Beanstalk:

files:
  "/usr/local/share/pycurl-7.43.0.tar.gz" :
    mode: "000644"
    owner: root
    group: root
    source: https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz

commands:
  01_download_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'curl -O https://bootstrap.pypa.io/get-pip.py'
  02_install_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'python3 get-pip.py'
  03_pycurl_uninstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: '/usr/bin/yes | sudo pip uninstall pycurl'
  04_pycurl_download:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz'
  05_pycurl_reinstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'sudo pip install pycurl-7.43.0.tar.gz --global-option="--with-nss"'

container_commands:
  09_pycurl_reinstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    # the upgrade option is because it will run after PIP installs the requirements.txt file.
    # and it needs to be done with the virtual-env activated
    command: 'source /opt/python/run/venv/bin/activate && pip3 install /usr/local/share/pycurl-7.43.0.tar.gz --global-option="--with-nss" --upgrade'

У меня возникла эта проблема, потому что я пытался настроить Celery 4 с Django 1.10 в Elastic Beanstalk. Если это ваш случай, я написал полный пост в блоге об этом.

person Diego Jancic    schedule 05.01.2017
comment
угу спасибо. этот материал может раздражать, особенно потому, что файлы конфигурации eb кажутся очень непостоянными и никогда не выдают разумных ошибок (включая проблемы с форматированием) - person Ian; 28.07.2017
comment
Я проголосовал за этот ответ, так как он очень помог мне решить аналогичную проблему при установке pycurl на AWS: stackoverflow.com/questions /51019622/ - person Greg Holst; 22.05.2019

Я на CentOS 7. Я пробовал все вышеперечисленное и ничего не смог заставить работать. Оказывается, мне нужно было запустить их как пользователя root. Поэтому, если у вас возникли проблемы, попробуйте любое из вышеперечисленных решений в качестве пользователя root. В качестве примера, вот что сработало для меня:

su -
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl

Конечно, все обычные заявления об отказе от прав пользователя root применяются.

Примечание. [nss|openssl|ssl|gnutls] в приведенном выше коде означает «выбрать один» и не включать квадратные скобки или вертикальные черты. Человек, который задал исходный вопрос, выбрал бы openssl. В моем конкретном случае я выбрал nss. Ваше сообщение об ошибке должно сказать вам, какой выбор сделать.

2019 Edit: выполнение sudo pip install может вызвать проблему с системной установкой Python на компьютере. Возможно, попробуйте поработать в виртуальной среде Python и установить там пакеты. Если это не сработает, трюк с sudo в моем ответе, вероятно, будет одним из последних вариантов, которые следует рассмотреть.

person alfonso    schedule 30.06.2015

Вы можете скачать файл tar.gz с здесь. Затем извлеките его в папку. Там вы найдете файл setup.py. Запустите команду, указанную на сайте. Например:

python setup.py --with-[ssl|gnutls|nss] install

К вашему сведению: я пытался установить pycurl на свои окна, но не смог. Но сделал это на своем линуксе.

person Sabuj Hassan    schedule 13.01.2014
comment
спасибо за ответ, но это может сработать только для меня, если я не выполняю установку через virtualenv и pip - person helloworld2013; 13.01.2014
comment
@Sabuj для установки pycurl в Windows используйте один из установщиков, представленных на этом прекрасном веб-сайте: lfd.uci.edu/~gohlke/pythonlibs/#pycurl - person Adam; 25.04.2014

Для тех, у кого есть проблемы с PyCharm CE на macOS Mojave, вот как я заработал в venv:

  • укажите версию: 7.43.0.1
  • Опции: --install-option=--with-openssl --install-option=--openssl-dir=/usr/local/opt/openssl

Снимок экрана интерпретатора проекта PyCharm

person fabe    schedule 19.01.2019
comment
Для меня в macOS Mojave мне нужно было запустить brew переустановить openssl, а затем pip install pycurl==7.43.0.1 --install-option=--with-openssl --install-option=--openssl-dir=/usr/local/ выбор/openssl - person user495732 Why Me; 21.05.2019

Я запускаю это на OS X, и некоторые из вышеперечисленных решений не работали. Подобно комментарию Эдварда Ньюэлла, переменная PYCURL_SSL_LIBRARY, похоже, была полностью проигнорирована. .
Дальнейшее чтение документа по установке PycURL выявило следующее:

pip может переустановить пакет, который он ранее скомпилировал, вместо перекомпиляции pycurl с новыми указанными параметрами

Поэтому мне пришлось принудительно скомпилировать его с помощью:

pip install --compile pycurl

Это работает в ряде случаев. Однако я столкнулся с несколькими системами, которые продолжали игнорировать переменную, поэтому, подобно ответу maharg101, я прибегнул к параметры установки, которые через pip можно установить следующим образом:

pip install pycurl --global-option="--with-[ssl|gnutls|nss]"

где вы выбираете один из трех вариантов внутри квадратных скобок. Обратите внимание, что доступен вариант ssl, а не openssl. Если вы укажете --with-openssl, вы получите сообщение об ошибке. Также обратите внимание, что если вы возились с переменной PYCURL_SSL_LIBRARY и переключали ее на странные значения, чтобы посмотреть, что произойдет, эта последняя команда определенно перехватит ее и выдаст ошибку, если значение установлено, но недействительно.

person Gunga    schedule 14.11.2015
comment
сначала удалите pycurl и pip install pycurl --global-option="--with-nss" работает для меня. Для протокола моя ошибка ImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl) - person ahyong; 16.11.2015
comment
Спасибо @ahyong, трюк с глобальными параметрами сработал для меня, хотя я пытался установить его из tar, он работал с pip, но не с setup.py странно ... - person Yondaime008; 07.12.2015

Переустановка завитка

Я пробовал каждое предложение из этого обсуждения, но никто не работал у меня. В качестве решения я переустановил 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

Я пробовал все здесь на macOS 10.13 безуспешно. Затем я нашел https://gist.github.com/webinista/b4b6a4cf8f158431b2c5134630c2cbfe, который сработал:

brew install curl --with-openssl
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
export LDFLAGS=-L/usr/local/opt/openssl/lib;export CPPFLAGS=-I/usr/local/opt/openssl/include; pip install pycurl --compile --no-cache-dir

Это сработало для меня как без использования virtualenv, так и внутри virtualenv.

person Daryl Spitzer    schedule 18.01.2019

Это сработало для меня:

pip install --compile --install-option="--with-openssl" pycurl

person user10148784    schedule 28.07.2018

Не уверен, что это из-за работы в virtualenv, но в CentOS 7 эти решения у меня не работали; скомпилированные объекты все еще извлекались из каталога кеша, когда я переустанавливал. Если вы столкнулись с той же проблемой после того, как попробовали другие решения здесь, попробуйте следующее:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl --no-cache-dir
person Robert Kelly    schedule 12.08.2016
comment
То же самое здесь, в CentOS 7 это не работало, пока я не добавил параметр --no-cahe-dir. Просто хочу еще раз упомянуть, что ему удалось запустить только под root с su -, как предложил @alfonso. Выполнение sudo pip3 ... было недостаточно хорошим. Вероятно, необходимо, чтобы переменная среды была подобрана. - person Nagev; 09.10.2017

Ошибка:

ImportError: pycurl: бэкэнд libcurl link-time ssl (openssl) отличается от бэкэнда ssl во время компиляции (нет/другое)

Это сработало для меня, Mac 10.13, python 3.5, импорт pycurl работал после установки следующим образом

pip3 uninstall pycurl;

pip3 install --compile --install-option="--with-openssl" pycurl
person vairav    schedule 16.11.2017
comment
Это сработало и для меня на Python 2.7.10 в High Sierra. - person skyler; 29.12.2017

Застряв на этом в течение длительного времени, я обнаружил, что Apple перестала включать заголовки OpenSSL, начиная с OS X 10.11 El Capitan. как исправить?

1) brew install openssl

2) echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile (or .zshrc for zsh, etc)

3) pip uninstall pycurl

4) pip install --install-option="--with-openssl" --install-option="--openssl-dir=/usr/local/opt/openssl" pycurl
person Whitebear    schedule 30.01.2018
comment
Конечно, мне потребовалось много времени, чтобы заставить его работать, довольно раздражает, должен сказать. Радоваться, веселиться!! - person Whitebear; 13.02.2018

Та же проблема на amazonlinux — решена
У меня возникла эта проблема при создании образа докера на основе amazonlinux, установке python3.7 и добавлении модуля pycurl. Все остальные модули Python были установлены правильно, кроме pycurl. Попробовав множество решений, предложенных в темах, связанных с этой проблемой, я, наконец, решил свою проблему, используя следующие команды для установки всех частей.
yum -y install python3 python3-devel gcc libcurl-devel aws-cli openssl-static.x86_64
затем установил другие модули, такие как psycopg2-binary, запросы, сертификаты, используя :
pip3 install --user --no-cache-dir -r requirements.txt

и, наконец, установил модуль pycurl, используя:

pip3 install --user --global-option="--with-openssl" --no-cache-dir pycurl
и передать здесь глобальную опцию openssl. Установка статической библиотеки openssl-static.x86_64 решила проблему в моем случае, поскольку использовала глобальную опцию, используемую второй командой pip3.

person rimetnac    schedule 01.10.2019

Для питона 2.7

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

Для python 3.5 также установите следующее:

sudo apt-get install python3.5-dev

Загрузите последний источник pycurl-7.43.0.tar.gz (md5) с pypi https://pypi.python.org/pypi/pycurl/7.43.0#downloads и выполните следующую команду:

python setup.py --with-openssl install

Также вы можете сделать это в среде Python:

(test_env)user@pc:~/Downloads/pycurl-7.43.0$ python setup.py --with-openssl install
person Andrew Nodermann    schedule 24.09.2016

Я столкнулся с этой проблемой, и мне помог ответ Санкета Джагтапа. Я попробовал ответ с наибольшим количеством голосов, но это не сработало.

Моя старая версия openssl 1.0.1t, я думаю, что переустановка openssl может решить эту проблему.

--- pycurl's openssl backend time....

Я пересобрал последнюю версию openssl и попробовал этот ответ. Проверь это.

pip install --compile --install-option="--with-openssl" pycurl

Это сработало для меня.

я рекомендую переустановить наш openssl для пробы..

person F.allen    schedule 22.04.2017

Следующее работало для меня с Python3.6

MacOS High-Sierra

sudo pip3 uninstall pycurl
sudo pip3 install --compile --install-option="--with-openssl" pycurl 

ЦенОС 7

sudo pip3 uninstall pycurl
sudo pip3 install --compile --install-option="--with-nss" pycurl
person Samuel    schedule 10.01.2018

Эта ссылка резюмирует причину возникновения ошибок и дает четкие инструкции по устранению проблемы.

https://cscheng.info/2018/01/26/installing-pycurl-on-macos-high-sierra.html

Для меня проблема возникла, когда я обновился до High-Sierra с El Captain.

person hyukkyulee    schedule 19.03.2018

FWIW, я столкнулся с множеством проблем при работе с AWS Elastic Beanstalk и, наконец, смог заставить его работать с:

packages:
  yum:
    openssl-devel: []
    libcurl-devel: []

container_commands:
  # Reinstall PyCurl with correct ssl backend
  05_reinstall_pycurl:
    command: |
      pip install --upgrade pip
      pip uninstall -y pycurl
      pip install --global-option='--with-openssl' pycurl
person Sean Chon    schedule 22.01.2020

Недавно при обновлении проекта Django у меня была аналогичная ошибка. Но на этот раз установка переменной окружения не сработала. Поэтому мне пришлось установить обе переменные среды export PYCURL_SSL_LIBRARY=openssl и передать флаг --global-option="with-openssl".

Исходный ответ был опубликован на этом страница

person helloworld2013    schedule 31.07.2020