我使用Python 2.7.3和请求。我通过pip安装了Requests。我相信这是最新的版本。我在Debian Wheezy上运行。

我在过去使用过很多次请求,从来没有遇到过这个问题,但似乎当使用请求进行https请求时,我得到了一个InsecurePlatform异常。

错误提到urllib3,但我没有安装它。我确实安装了它,检查它是否解决了这个错误,但它没有。

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and 
may cause certain SSL connections to fail. For more information, see 
https://urllib3.readthedocs.org/en/latest  
/security.html#insecureplatformwarning.

知道我为什么会收到这个吗?我已经检查了文档,正如在错误消息中指定的那样,但是文档说要导入urllib3,要么禁用警告,要么提供证书。


当前回答

上周,我在Ubuntu 14.04 (Python 2.7.6)上进行了apt-get dist-upgrade,其中包括libssl1.1:amd64。

由于我从cron作业运行certbot-auto renew,所以我还使用——no-self-upgrade来减少不定期的维护。这似乎是问题的根源。

要修复这个错误,我所需要做的就是成为根用户(使用su的登录开关),并让certbot-auto自己升级。即:

sudo su --login
/usr/local/bin/certbot-auto renew 
# ... Upgrading certbot-auto 0.8.1 to 0.18.2... blah blah blah ...

而不是通常从root的crontab运行:

5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

在此之后,让sencrypt renwals再次正常运行。

其他回答

这个答案是不相关的,但如果你想摆脱警告,并从请求中得到以下警告:

InsecurePlatformWarning /usr/local/lib/python2.7/ disti -packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: true SSLContext对象不可用。这将阻止urllib3正确配置SSL,并可能导致某些SSL连接失败。欲了解更多信息,请参见https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning。

您可以通过在python代码中添加以下行来禁用它:

requests.packages.urllib3.disable_warnings ()

我也有同样的问题 Mac Pycharm社区版2019.3 Python解释器3.6。 用20.0.2升级pip对我来说很有效。 Pycharm—> Preferences—> Project Interpreter—>单击pip—>指定版本20.0.2—>安装包

不要安装pyOpenSSL,因为它很快就会被弃用。目前最好的方法是-

import requests
requests.packages.urllib3.disable_warnings()

上周,我在Ubuntu 14.04 (Python 2.7.6)上进行了apt-get dist-upgrade,其中包括libssl1.1:amd64。

由于我从cron作业运行certbot-auto renew,所以我还使用——no-self-upgrade来减少不定期的维护。这似乎是问题的根源。

要修复这个错误,我所需要做的就是成为根用户(使用su的登录开关),并让certbot-auto自己升级。即:

sudo su --login
/usr/local/bin/certbot-auto renew 
# ... Upgrading certbot-auto 0.8.1 to 0.18.2... blah blah blah ...

而不是通常从root的crontab运行:

5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

在此之后,让sencrypt renwals再次正常运行。

我没有在生产中使用它,只在一些测试运行中使用。重申一下urllib3文档

如果你知道你在做什么,想要禁用这个和 其他警告

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

编辑/更新:

以下也可以:

import logging
import requests

# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)