У меня есть экземпляр ec2 в AWS под управлением Python3.6 (Amazon Linux / 2.8.3), где Мне нужно установить pycurl с NSS ssl backend .
Сначала я попробовал это, добавив pycurl==7.43.0 --global-option="--with-nss"
в мой requirement.txt
файл, но у меня были ошибки при установке. В итоге я сделал это, добавив .config
файл в .ebextensions
(который запускается во время развертывания):
container_commands:
09_pycurl_reinstall:
# 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 && PYCURL_SSL_LIBRARY=nss pip3 install pycurl --global-option="--with-nss" --upgrade --no-cache-dir --compile --ignore-installed'
Кажется, Pycurl установлен правильно, но работник из сельдерея не работает. Журналы сельдерея показывают:
__main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory
Если я ssh подключаюсь к экземпляру и запускаю python 3.6 -c 'import pycurl'
, я получаю более подробную ошибку:
ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (nss)
Так что я предполагаю, что моя проблема в том, что я ранее установил libcurl с openSSL вместо NSS, и, следовательно, несоответствие между libcurl и pycurl.
Согласно другому вопросу stackoverflow, для установки libcurl с бэкэндом NSS я должен был установить его с:
sudo apt libcurl4-nss-dev
Но поскольку сервер работает под управлением Amazon Linux, я не могу использовать команду apt
. Поэтому я сделал вместо:
yum install libcurl-devel
И я предполагаю, что это проблема: при установке libcurl с поддержкой OpenSSL, когда мне это нужно с поддержкой NSS.
Как я могу установить libcurl с NSS в Amazon Linux ?? (мне нужен NSS, потому что я запускаю приложение Django с сельдереем, использующим SQS в качестве посредника, а SQS требует NSS).
Большое спасибо!