Python 设置SSL后安装pycurl时出现SSL错误
以下是一些信息:Python 设置SSL后安装pycurl时出现SSL错误,python,easy-install,pycurl,Python,Easy Install,Pycurl,以下是一些信息: 我正在运行MacOS10.7.5 我已经安装了curl7.21.4(我相信是随开发工具一起安装的) 我有python 2.7.1 我一直在尝试安装pycurl,但每次尝试运行它时,我都会得到: ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other) 我首先使用以下设置安装pycurl: pytho
- 我正在运行MacOS10.7.5
- 我已经安装了curl7.21.4(我相信是随开发工具一起安装的)
- 我有python 2.7.1
ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)
我首先使用以下设置安装pycurl:
python setup.py install
这不起作用(因为没有配置SSL)
在尝试以下操作之前,我卸载了pycurl(sudo rm-rf/Library/Python/2.7/site packages/pycurl*
):
export PYCURL_SSL_LIBRARY=openssl
easy-install pycurl
再次尝试之前:
python setup.py --with-ssl install
但是,我仍然会遇到与未编译ssl相同的错误。好像所有的指令都忽略了我的尝试
安装时setup.py一点也不抱怨,但在我设置PYCURL_SSL_LIBRARY env var之后,“轻松安装”会打印此消息:
src/pycurl.c:151:4: warning: #warning "libcurl was compiled with SSL support, but configure could not determine which " "library was used; thus no SSL crypto locking callbacks will be set, which may " "cause random crashes on SSL requests"
这似乎表明它完全忽略了我刚才告诉它使用openssl安装的事实
设置中是否缺少一些内容?您还需要用于openssl的“开发工具”(标题/库)
还可以尝试pycurl的上一个版本,它可能是开箱即用的。当您得到:失败:ImportError:pycurl:libcurl链接时ssl后端(nss)不同于编译时ssl后端(无/其他)
您需要在正确设置pycurl_SSL_库的情况下重新编译pycurl。
重新安装过程似乎分为两个阶段
似乎pip在某个地方下载了这些东西,对其进行编译,然后将其放在python可以使用的地方。
如果缓存中有编译后的版本,则实际上是错误的,因为它不会重新编译。不管PYCURL\u SSL\u库变量中有什么,它都“给”python同样的东西
解决方案非常简单,擦除缓存以强制其重新编译。根据您的操作系统,缓存可能位于多个位置。您可以使用setup.py来搜索它。它包含PACKAGE=“pycurl”字符串。但是没有必要这么麻烦。最新的pip版本支持安装--编译选项
升级至最新的pip:pip安装——升级pip#无论如何都是健康的
使用以下命令删除当前pycurl:pip卸载pycurl
根据需要设置PYCURL\u SSL\u库:export PYCURL_SSL_LIBRARY=nss#对我来说,这是必需的设置
最后运行pip安装——编译pycurl
请注意,对于编译过程中所需的各种头文件,您可能需要一些-devel包。要对@Andrei给出的正确答案添加一点更新,我想说最后一个命令需要通过向pip install添加no cache dir来强制执行redownload和setup
pip install --no-cache-dir --compile pycurl
这将强制完成编译。我不得不在CentOS 7上使用以下命令:
sudo-pip-install--no-cache-dir--compile--ignore-installed--install option=“--with-nss”pycurl
无需卸载
或设置PYCURL\u SSL\u库
。所有的东西都放在那一行中。对于mac
sudo pip install--no cache dir--compile--ignore installed--install option=“--with openssl”pycurl
谢谢假设您已经通过自制安装了openssl,请检查
brew信息openssl
。您可能需要通过env vars包含一些编译标志才能使用它,就像许多“仅限桶”lib一样。公认的答案并没有为我解决问题,您的答案解决了问题。谢谢我也是。运行RHEL7并需要运行相同的命令。建议的解决方案在安装时没有重新编译,因此PYCURL_SSL_库值似乎被忽略,以下内容也可以使用:\export PYCURL_SSL_LIBRARY=nss
\pip install--no cache dir--compile PYCURL
此解决方案在所有情况下都不起作用。添加--no cache dir
以适合我的方式编译了它#pip安装--无缓存目录--编译pycurl
我得到了pycurl:libcurl链接时ssl后端(openssl)不同于编译时ssl后端(无/其他)
尽管我已经完成了所有步骤,甚至使用brew重新安装了openssl并尝试了--无缓存目录。这让我发疯了,我似乎需要这个额外的选项(可能是macOS Catalina上的附加--install选项=“--with openssl”)