重新安装curl
在这次讨论中,我尝试了所有建议,但没有人为我工作。作为解决方案,我重新安装了curl和curlib。之后,我能够在环境中安装带有ssl支持的pycurl。
开始时:
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
第1部分。使用pip重新安装
首先,如先前建议的那样,我已使用pip从virtualenv中删除了pycurl:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
这里的想法是程序包已缓存,我们只是使用openssl选项重新安装它。
我还尝试使用以下方法通过pip重新编译pycurl:
pip install pycurl --compile pycurl --no-cache
..但是运行后有相同的错误:
python
import pycurl
pycurl.version
ImportError:pycurl:libcurl链接时ssl后端(gnutls)与编译时ssl后端(openssl)不同
第2部分。从tar安装
在先前的方法不起作用之后,我决定使用以下方法从tar安装pycurl:
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
输出线之一将是
'--without-ssl''--with-nutl'
要重新编译它:
首先去除卷曲:
sudo apt-get purge curl
安装curl所需的所有构建依赖项
sudo apt-get build-dep curl
获取最新(截至2016年12月20日)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'