请求(由SSLError(由于SSL模块不可用,无法连接到HTTPS URL引起)。)在Linux上

时间:2020-06-06 16:36:10

标签: python linux ssl python-requests anaconda

here回答了这个问题,但对于Windows用户。我在Anaconda环境下的第三方应用程序的Linux机器上收到此错误。我在PATH环境中添加了以下路径:

<path>/anaconda2/lib
<path>/anaconda2/bin

但是当我跑步时:

import requests
requests.get("https://api.ipify.org")

我得到了错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='api.ipify.org', 
port=443): Max retries exceeded with url: / (Caused by SSLError("Can't 
connect to HTTPS URL because the SSL module is not available."))

第三方应用程序和conda shell都在PATH env中包含了这些路径,但仅在shell上有效。

2 个答案:

答案 0 :(得分:0)

错误消息显示“ SSL模块不可用”。请求将openssl用作其“ SSL模块”,因此请确保openssl已安装并且可以正常工作。

首次运行:

~$ conda list

您应该在输出中看到opensslpyopenssl

如果您未安装opensslpyopenssl

如果已安装openssl,请运行:

~$ openssl

如果得到:

openssl: error while loading shared libraries: libcrypto.so.1.0.0: cannot enable executable stack as shared object requires: Invalid argument

使用上面的版本号运行

~$ sudo find / -name libcrypto.so.[your version] 

然后使用上述输出中的libcrypto.so。[您的版本]路径:

~$ sudo execstack -c [path to]/libcrypto.so.[your version]

然后运行进行测试:

~$ openssl
OpenSSL>

您需要在所有环境中都这样做

答案 1 :(得分:0)

事实证明,我的python环境的_ssl.so目录中的lib-dynload模块被第3方软件中的_ssl.so模块所覆盖,这是有冲突的。因此,我已经建立了指向我自己模块的符号链接。