在python中,在Ubuntu服务器上,我试图让requests
库发出https请求,如下所示:
import requests
requests.post("https://example.com")
起初,我得到以下内容:
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning:真正的SSLContext对象不可用。 这可以防止urllib3适当地配置SSL并可能导致 某些SSL连接失败。有关更多信息,请参阅 https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning
按照此问题中的建议:InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately后,我现在已将警告升级为以下错误:
AttributeError:'_socketobject'对象没有属性 'set_tlsext_host_name'
我该如何解决这个问题?
答案 0 :(得分:13)
对我的解决方法如下:
sudo apt-get purge python-openssl
sudo pip install pyopenssl
答案 1 :(得分:3)
这让我能够在我的Ubuntu 12.04.3 LTS上运行python。
sudo apt-get install python-dev python-pip build-essential libffi-dev
sudo -H pip install --upgrade pip setuptools && sudo -H pip install --upgrade pyopenssl
答案 2 :(得分:2)
On RedHat:
sudo yum remove pyOpenSSL
sudo pip install pyopenssl