Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在aws ec2中安装带有nss后端的libcurl?(Python 3.6 64位Amazon Linux)_Python_Amazon Web Services_Amazon Ec2_Libcurl_Pycurl - Fatal编程技术网

如何在aws ec2中安装带有nss后端的libcurl?(Python 3.6 64位Amazon Linux)

如何在aws ec2中安装带有nss后端的libcurl?(Python 3.6 64位Amazon Linux),python,amazon-web-services,amazon-ec2,libcurl,pycurl,Python,Amazon Web Services,Amazon Ec2,Libcurl,Pycurl,我在AWS中有一个运行Python3.6(Amazon Linux/2.8.3)的ec2实例,我需要安装带有NSS ssl后端的pycurl 首先,我尝试将pycurl==7.43.0--global option=“--with nss”添加到我的requirement.txt文件中,但安装错误。因此,我最终在.ebextensions中添加了一个.config文件(在部署期间运行): Pycurl似乎安装正确,但芹菜工人没有运行。芹菜工人日志显示: __main__.Configurati

我在AWS中有一个运行Python3.6(Amazon Linux/2.8.3)的ec2实例,我需要安装带有NSS ssl后端的pycurl

首先,我尝试将
pycurl==7.43.0--global option=“--with nss”
添加到我的
requirement.txt
文件中,但安装错误。因此,我最终在
.ebextensions
中添加了一个
.config
文件(在部署期间运行):


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)
所以我想我的问题是我以前用openSSL而不是NSS安装了libcurl,因此libcurl和pycurl之间不匹配


根据另一个stackoverflow问题,对于要与NSS后端一起安装的libcurl,我应该与以下一起安装:

sudo apt libcurl4-nss-dev
但是由于服务器运行的是AmazonLinux,我不能使用
apt
命令。因此,我改为:

yum install libcurl-devel
我想这就是问题所在:当我需要NSS支持时,它会安装带有OpenSSL支持的libcurl

如何在Amazon Linux中安装带有NSS的libcurl???(我需要NSS,因为我正在运行一个带有芹菜的Django应用程序,使用SQS作为代理,而SQS需要NSS)


多谢各位

我刚刚遇到了同样的问题,并设法解决了:)

  • 检索
    libcurl
    的Amazon Linux配置选项:
  • 所有指向路径的选项都可以忽略,但如果您想要与system
    libcurl
    相同的功能,则必须保留其他选项。当然,
    --带ssl
    将被
    --不带ssl--带nss
    替换

    1.1安装先决条件:

    sudo yum install libssh2-devel nss-devel
    
    (当然,您应该将其添加到ebextensions的
    yum
    部分)

  • 从源代码处编译
    libcurl
    (我选择7.61.1以匹配Amazon Linux 2018.03使用的版本):
  • (当然,这应该通过ebextensions的
    文件
    部分作为Shell脚本正确部署)

    现在您应该看到在
    /usr/local/lib
    中创建的
    libcurl.so.4

  • 为要使用自定义
    libcurl
    编译的
    pycurl
    定义以下环境变量:
  • 运行您的
    pip安装
  • 您可以选中链接到右侧
    libcurl
    pycurl

    ldd /opt/python/run/venv/local/lib64/python3.6/site-packages/pycurl.cpython-36m-x86_64-linux-gnu.so
    
    应该向您显示
    libcurl.so.4=>/usr/local/lib64/libcurl.so.4

    当然
    python3.6-c'importpycurl'
    应该可以工作


    就这样!您应该能够使用SQS运行芹菜。

    在我的python ec2实例上安装pycurl时遇到了很多问题-首先,pip根本不会安装pycurl。必须ssh并运行

    yum install libcurl-devel
    
    在此之后,我更新了requirement.txt文件,将相关的ssl选项(--with openssl)作为安装选项

    pycurl==7.43.0.5 --install-option="--with-openssl"
    
    一旦我在requirement.txt中部署了一个带有此更改的新版本,pycurl就工作得很好,我用它进行了测试

    python 'import pycurl'
    
    我从错误消息中知道我需要使用openssl

    libcurl链接时间ssl后端(openssl)


    我的堆栈与您的几乎相同(从其他问题中看到):Django/SQS/芹菜/豆茎。我让它运行起来,pycurl也有问题,但我使用的是openssl。我不认为SQS需要nss,至少对我来说openssl在AmazonLinux2.8.6上与Python3.6配合得很好。我不知道为什么我认为SQS需要nss。无论如何谢谢你!
    ldd /opt/python/run/venv/local/lib64/python3.6/site-packages/pycurl.cpython-36m-x86_64-linux-gnu.so
    
    yum install libcurl-devel
    
    pycurl==7.43.0.5 --install-option="--with-openssl"
    
    python 'import pycurl'