请求(由 SSLError 引起(“无法连接到 HTTPS URL,因为 SSL 模块不可用。”)PyCharm 请求网站中的错误

Posted

技术标签:

【中文标题】请求(由 SSLError 引起(“无法连接到 HTTPS URL,因为 SSL 模块不可用。”)PyCharm 请求网站中的错误【英文标题】:Requests (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.") Error in PyCharm requesting website 【发布时间】:2019-06-05 16:59:18 【问题描述】:

通过 Pycharm 在 Python3 Windows 中使用请求,并收到 SSL 模块不可用错误

我花了几个小时试图找出可能导致这种情况的原因。我已经重新安装了 Anaconda,我完全被卡住了。运行以下时

def Earlybird(daycount):
    url = 'https://msft.com'
    response = requests.get(url)
    print(response)
Earlybird()

我收到错误消息

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

我不知道是什么原因造成的。由于 Anaconda 是最近安装的,我会假设一切都是最新的,所以我不确定这是否指向错误的 SSL?我对python有点陌生,所以感谢您的耐心等待。 -

【问题讨论】:

从 OpenSSL 安装了这个 slproweb.com/download/Win64OpenSSL-1_1_1c.exe。解决了我的问题。 【参考方案1】:

不知道这是否已经解决,但我在 Windows 10 上遇到了与 Anaconda python 3.7.3 和 Idle 类似的问题。通过添加修复它:

<path>\Anaconda3
<path>\Anaconda3\scripts
<path>\Anaconda3\Library\bin

到 PATH 变量。

【讨论】:

虽然不知道为什么要导出多条路径,但是对我有用,谢谢。 这对我有用!不是“execstack ...”cmd,而是这个!添加 path/anaconda3/library/bin 对我有用 不确定我们必须如何/在哪里添加这 3 条路径? Alex - 将这些项目添加到 PATH 环境变量中(例如,请参阅下面的 Mukesh Methaniya/Neuron 答案) 我必须在哪里添加这些路径?我正在尝试使用 python get-pip.py 从特定文件夹运行 python 代码【参考方案2】:

我在 Windows 10 上,我在 python 3.7.4 上全新安装 Anaconda 时遇到问题,github 上的这篇文章解决了我的问题:

(来源:https://github.com/conda/conda/issues/8273)

我引用:

" 我的解决方法: 我已经复制了以下文件

libcrypto-1_1-x64.*
libssl-1_1-x64.*

从 D:\Anaconda3\Library\bin 到 D:\Anaconda3\DLLs。

它就像一个魅力! "

【讨论】:

对我来说所有东西的相同版本。具有 3.7.4 的 Windows 10 Miniconda。已使用此解决方案修复。【参考方案3】:

Windows 用户需要设置以下路径:

..\Anaconda3 ..\Anaconda3\scripts ..\Anaconda3\Library\bin

每位用户:

    打开环境变量 单击用户变量 关闭命令提示符(如果已打开并重新打开)

系统范围(需要重新启动)

    打开环境变量 单击系统变量 重启 Windows

【讨论】:

为我工作。谢谢。 你在哪里设置路径?添加“新”,然后为每个 Anaconda3 文件夹创建路径?【参考方案4】:

我根据以下建议通过安装 OpenSSL 解决了这个问题:https://github.com/conda/conda/issues/8046#issuecomment-450515815

conda 仓库中对应的票证:https://github.com/conda/conda/issues/8046

更新:问题(在 PyCharm 中)应该在 2019.1 版本中得到解决(抢先体验预览版本已经可用https://www.jetbrains.com/pycharm/nextversion/)。

【讨论】:

【参考方案5】:

我已经从这里安装了二进制文件:https://slproweb.com/products/Win32OpenSSL.html 官方 OpenSSL wiki 中提到了该站点。它解决了我的问题

【讨论】:

那里有很多二进制文件,到底是哪一个?制作准确的链接或屏幕截图会很酷。我使用 MSI 文件的第一个链接,它成功了,谢谢你的朋友:slproweb.com/download/Win64OpenSSL_Light-1_1_1b.msi【参考方案6】:

这个问题让我发疯了,直到我发现这篇说要做的帖子

brew upgrade python3 

(不使用pycharm,使用sublime)

Error when importing ssl in Python 3.7.4 on macOS 10.14.6

【讨论】:

【参考方案7】:

我没有 Anaconda,所以我采取的步骤是:

brew uninstall python3 brew install python3 收到一条错误消息,指出Your Xcode (10.2) is too outdated. Please update to Xcode 11.3 (or delete it). Xcode can be updated from the App Store.**所以,我删除了 Xcode,因为不会显示更新,然后我重新安装了它。 之后运行xcode-select --install。如果你不...你会得到一个错误:The following formula python cannot be installed as binary package and must be built from source. Install the Command Line Tools: xcode-select --install 运行brew install python3,成功完成。

使用这个脚本只是为了看看它是否有效

import requests
r = requests.get('https://www.office.com')
print(r)

运行脚本 python3 和 python3.7,输出是 &lt;Response [200]&gt; 而不是 SSLError。

【讨论】:

【参考方案8】:

我在 2020 年 4 月遇到了它。这些是我尝试过的选项,最后一个解决方案让我通过了。

问题:

当我在 Spyder IDE 中使用时,请求模块工作正常,但是当我尝试在 Windows 中执行脚本时,它会因 SSL 错误而失败。它适用于 HTTP 请求,但对于 HTTPS 请求我得到 SSL 错误。

    我厌倦了 Veify=True, False 以及 Certs。 同样的错误。 已删除证书 - conda remove certifi - 无效已更新 openssl , certifi - 还是一样的错误(参考: https://github.com/ContinuumIO/anaconda-issues/issues/494) 已添加 路径变量 - 同样的错误 在 Anaconda - 同样的错误

解决方案:

解决方案来自:https://github.com/conda/conda/issues/8273

我已将以下文件从 Anaconda3\Library\bin 复制到 \Anaconda3\DLL

libcrypto-1_1-x64.* libssl-1_1-x64.*

【讨论】:

这对我也有用!感谢您完成所有调试步骤:)【参考方案9】:

如果使用Anaconda Prompt,则无需添加环境路径。

启动 Anaconda 提示更改到您的目录并运行您的脚本或从那里启动您的编辑器。这将确保您处于完整的 Anaconda 环境中,并且 SSL 错误将停止。

命令提示符和 Anaconda Prompt 有什么区别? 请参阅what is the difference between command prompt and anaconda prompt 的这个 SO 回答。

【讨论】:

【参考方案10】:

我在安装 Windows 10 时遇到了同样的情况。

在我从 Anaconda3\Library\bin to \Anaconda3\DLL 复制 libcrypto-1_1-x64.dll and libssl-1_1-x64.dll 之前,Anaconda3 无法打开 Anaconda Navigator。

一旦我这样做了pip 在基本环境中安装工作正常,但在我创建的另一个环境中却不行。我必须在新环境中执行与上述相同的操作。

也就是说,将libcrypto-1_1-x64.dll and libssl-1_1-x64.dll\&lt;env folder&gt;\Library\bin 复制到\&lt;env folder&gt;\DLL 就可以了。

【讨论】:

【参考方案11】:

在 Windows 10 上处理相同的问题后,解决方案相当简单:

    打开 Anaconda 提示 运行conda init 关闭并重新打开要在其中运行代码的所有打开的 Python 解释器(PyCharm、Anaconda Prompt、cmd 等)

再次运行您的代码,它应该可以工作。我已经升级了 Anaconda 和 PyCharm,并且在运行 conda init 之前遇到了所有版本组合的问题,这很像来自 Paul Stevens 的答案。不要跳过 #3——重启 PyCharm 或任何其他解释器是关键。

【讨论】:

非常感谢您! VSCode 刚刚在我的机器上完成了它的每月自动更新,突然这个问题出现了,你的解决方案完美运行 :)【参考方案12】:

我在使用 Conda 和 Python 2.7.2 的 Windows 10 上遇到了类似的问题

在尝试了很多很多解决方案后,我遇到了this response,这表明该版本中的 openssl 存在问题。

一旦我将 python 降级到 3.7.1(构建 h33f27b4_4),一切正常。

【讨论】:

【参考方案13】:

在花了几个小时浏览 Anaconda 文档、Github 问题单等之后,我终于设法让它在 Windows 10 64 位(Anaconda 3.7)上运行。它对我有用的是从https://slproweb.com/download/Win64OpenSSL-1_1_1d.exe 安装 Win64 OpenSSL v1.1.1d 二进制文件。

注意:版本似乎很重要!我已经尝试了 1.1.0L(如其他 cmets 和响应中所建议的那样),但在这个版本中,问题仍然存在。如果您在安装一些 OpenSSL 库后仍然遇到问题,请继续尝试,直到找到正确的版本。对于 Windows 10 上的 Anaconda 3.7,似乎正确的是 1.1.1d。我没有尝试精简版。

对我来说不起作用的事情:

在 Anaconda 故障排除 (https://docs.conda.io/projects/conda/en/latest/user-guide/troubleshooting.html#ssl-connection-errors) 之后。激活环境并按照他们所说的去做完全没有帮助。 将ssl_verify 选项更改为False 使用“添加到路径”选项安装 Anaconda 3 手动将libcryptolibssl DLL 复制到不同的位置(请参阅https://github.com/conda/conda/issues/8273#issue-409800067)

【讨论】:

【参考方案14】:

访问网站:为我提供来自开发者工具的以下信息并查看标题。 (右键单击 --> 检查。然后打开网络选项卡并检查标题)

请求网址:http://www.msft.com/ 请求方法:GET 状态码:200 OK 远程地址:205.178.189.130:80 推荐人政策:no-referrer-when-downgrade

所以我们看到我们需要执行对 HTTP 的请求,而不是 HTTPS。

import requests


def Earlybird():
    url = 'http://msft.com/'
    response = requests.get(url)
    print(response.text)

if __name__ == '__main__':
    Earlybird()

【讨论】:

【参考方案15】:

在全新安装 anaconda 后执行 pip 安装时遇到相同的 SSL 错误。有什么帮助是在进行 pip 安装之前激活基础环境。 从 cmd 执行 activate base 然后运行您的 python 脚本。也可以试试'conda run -n base python script.py'参考-https://github.com/conda/conda/issues/8487

【讨论】:

【参考方案16】:

此错误发生在带有 Python 3.7.3 的 VSCode 中,但在带有 Python 3.7.0 的 Windows 10 的 IDLE 编辑器中可以正常工作。

【讨论】:

【参考方案17】:

确保创建项目时选择了 conda 环境选项。

通过重新创建项目并从“使用新环境”选项中选择“conda”解决了我的问题

看图:

【讨论】:

只需要Add Interpreter 然后选择existing environnement 就可以了。无需重新创建项目。【参考方案18】:

我的队友机器也面临同样的问题。修复了添加 anaconda 路径的问题。在我的系统下面是 Anaconda 的路径:

C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\
C:\ProgramData\Anaconda3\Library\bin

【讨论】:

【参考方案19】:

确保命令是从虚拟环境中运行的;那是我的错。

【讨论】:

【参考方案20】:

注意:此问题已在 Windows 10 上修复 我在 Windows 10 上的虚拟环境中遇到了同样的问题。 以管理员身份运行 CMD 并创建新的虚拟环境解决了问题。

以管理员身份运行 cmd 创建虚拟环境(virtualenv .venv) 激活虚拟环境.venv\Scripts\activate Pip 安装请求

【讨论】:

【参考方案21】:

通过在我的 Windows 10 中执行以下操作解决:

mklink "C:\Users\hal\AppData\Local\Continuum\anaconda3\DLLs\libssl-1_1-x64.dll" "C:\Users\hal\AppData\Local\Continuum\anaconda3\Library\bin\libssl-1_1-x64.dll"

mklink "C:\ProgramData\Anaconda3\DLLs\libcrypto-1_1-x64.dll" "C:\ProgramData\Anaconda3\Library\bin\libcrypto-1_1-x64.dll"

【讨论】:

【参考方案22】:

我使用 VSCode 进行编辑和调试,唯一对我有用的解决方案是在 windows 中编辑环境变量。显然这会导致问题,但我不确定它们是什么。

从 Anaconda 提示符运行(如 sayth 所建议的那样)对我来说不是一个选项。或者也许建议是运行 anaconda 提示符,然后从 anaconda 提示符以某种方式启动 VSCode。听起来不是一个合理的要求。

这似乎是一个长期存在的长期问题,没有适用于所有人的明确全球答案。

【讨论】:

不确定“不合理的请求”是什么意思,但实际上这通常是避免奇怪错误的好习惯,它也解决了这个错误。不难,在提示符中输入code即可启动VS Code。【参考方案23】:

根据此处的说明重新安装 python 为我解决了这个问题: How can I install a previous version of Python 3 in macOS using homebrew?

【讨论】:

【参考方案24】:

在 Windows 10 上 - 这是一种解决方法,但不能解决根本问题,如果您只需要安装一些东西并继续前进;在命令提示符、powershell 或 dockerfile 执行以下命令:

pip 配置集 global.trusted_host "pypi.org files.pythonhosted.org"

【讨论】:

【参考方案25】:

我在 VS Code 中遇到了同样的问题。

解决方案是使用 Anaconda Prompt 启动 VS Code。

也就是说,运行 Anaconda Prompt,如果您正在使用虚拟环境,请激活您的虚拟环境,然后输入 code [working directory]

【讨论】:

【参考方案26】:

我使用这个“Win64 OpenSSL v1.1.1h”->来自https://slproweb.com/products/Win32OpenSSL.html的EXE

我已经安装好了

【讨论】:

欢迎来到 ***!这个解决方案已经在anotheranswers 中提出。请在发布之前确保您的解决方案是新的。

以上是关于请求(由 SSLError 引起(“无法连接到 HTTPS URL,因为 SSL 模块不可用。”)PyCharm 请求网站中的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ruby on Rails 的 HTTP GET 请求:OpenSSL::SSL::SSLError

python:接口请求中出现requests.exceptions.SSLError 和 InsecureRequestWarning的解决办法

Python 请求 requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF 发生违反协议

pycharm fiddler requests.exceptions.SSLError

requests sslerror

requests.exceptions.SSLError: HTTPSConnectionPool(host='cn.bing.com', port=443)报错解决方案