Windows环境中Python SSL异常:Can't connect to HTTPS URL because the SSL module is not available

Python 调用request模块访问https网站报错: Can't connect to HTTPS URL because the SSL module is not available。

环境:Anaconda3.

安装Anaconda3,开发环境使用Anaconda3 自带的Jupyter Notebook。 相关函数代码示例如下:

 


import request

import base64

def GetJiraTickets():
    jiraticketshtml='''<font color="blue",size="3">'''
    url="https://www.baidu.com.cn"
    auth=base64.b64encode(b'username:password')
    auth=auth.decode('utf8')
    header = {
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": 'Basic {}'.format(auth),
        "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0"
    }

    response = requests.request("POST",url,data=None,headers=header)

    #print(response.status_code)

    return response.text.

这个函数在Anaconda的Jupyter Notebook中运行正常,为了方便调用,创建bat脚本,添加下面一行命令来执行该python 脚本:

C:\Anaconda3\python.exe C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py 

但双击运行该bat脚本时报告如下错误:


Microsoft Windows [Version 10.0.16299.1268]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\scnzqz>C:\Anaconda3\python.exe C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 588, in urlopen
    conn = self._get_conn(timeout=pool_timeout)
  File "C:\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 248, in _get_conn
    return conn or self._new_conn()
  File "C:\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 816, in _new_conn
    raise SSLError("Can't connect to HTTPS URL because the SSL "
urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 449, in send
    timeout=timeout
  File "C:\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Anaconda3\lib\site-packages\urllib3\util\retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.ondemand.sas.com', port=443): Max retries exceeded with url: /jira/issues/?filter=22079 (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py", line 274, in <module>
    sendmail()
  File "C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py", line 268, in sendmail
    mail.HTMLBody  = CreateBodyHtml()
  File "C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py", line 248, in CreateBodyHtml
    statushtml=CreateStatusHtml()
  File "C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py", line 105, in CreateStatusHtml
    ssostatus['Tickets']=ssostatus['Tickets']+GetJiraTickets()
  File "C:\WorkSpace\PythonProgram\Deployment\CreateComplianceReport2.0.py", line 45, in GetJiraTickets
    response = requests.request("POST",url,data=None,headers=header)
  File "C:\Anaconda3\lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.ondemand.sas.com', port=443): Max retries exceeded with url: /jira/issues/?filter=22079 (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

 


网上搜索大部分是Linux环境相关,有两篇帖子提到是Anaconda自带的SSL版本和系统的SSL版本不匹配导致的。很可能是系统自带的SSL版本低。下载安装最新版本的OpenSSL后问题解决。bat 脚本执行正常。

参考文章:

https://blog.csdn.net/zcyzhangzhou/article/details/86572845

https://blog.csdn.net/qq_36823518/article/details/88406237

https://blog.csdn.net/u011426236/article/details/88864469

https://blog.csdn.net/marueibo/article/details/86678936

https://slproweb.com/products/Win32OpenSSL.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值