请求(由 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,输出是 <Response [200]>
而不是 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
从\<env folder>\Library\bin
复制到\<env folder>\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
手动将libcrypto
和libssl
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.exceptions.SSLError: HTTPSConnectionPool(host='cn.bing.com', port=443)报错解决方案