Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Requests.exceptions.SSLError:Errno 185090050_Python_Ssl_Py2exe - Fatal编程技术网

Python Requests.exceptions.SSLError:Errno 185090050

Python Requests.exceptions.SSLError:Errno 185090050,python,ssl,py2exe,Python,Ssl,Py2exe,我正在尝试在.exe中创建一个.py。在.py中,应用程序工作正常,但在使用py2exe在.exe中构建应用程序后,出现以下错误: Traceback (most recent call last): File "filename.py", line 210, in <module> File "requests\api.pyc", line 55, in get File "requests\api.pyc", line 44, in requests File "requests

我正在尝试在.exe中创建一个.py。在.py中,应用程序工作正常,但在使用py2exe在.exe中构建应用程序后,出现以下错误:

Traceback (most recent call last):
File "filename.py", line 210, in <module>
File "requests\api.pyc", line 55, in get
File "requests\api.pyc", line 44, in requests
File "requests\sessions.pyc", line 461, in request
File "requests\sessions.pyc", line 567, in send
File "requests\adapters.pyc", line 399, in send
requests.exceptions.SLLError: [Errno 185090050] _ssl.c:344: error: 0B084002:x509 certificate routines: X509_load_cert_crl_file:system lib
setup.py如下所示:

from distutils.core import setup
import py2exe

setup(console=['filename.py'])

如何解决此问题?

请求模块(或其下方的
urllib3
模块)无法打开CA证书文件

如果不想验证服务器的证书,可以将调用更改为:

r2 = requests.get('https://www.hitbox.tv/api/chat/servers', 
                  timeout=timeoutDefault, verify=False)
如果您关心证书(您应该这样做),请确保CA证书文件与您的应用程序捆绑在一起。根据
请求
文档:

您还可以将验证路径传递到专用的CA_BUNDLE文件 证书。您还可以设置REQUESTS\u CA\u BUNDLE环境变量

如果您设置 验证为False


请看这里:

我通过猴子补丁
请求
传递
cacert.pem
来解决这个问题:

def _monkey_patch_requests():
    orig_send = HTTPAdapter.send
    def _send_no_verify(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
        return orig_send(self, request, stream, timeout, 'cacert.pem' if verify else False, cert, proxies)
    HTTPAdapter.send = _send_no_verify

_monkey_patch_requests()

并将
/Lib/site packages/certifi/cacert.pem
复制到
dist

相关:。谢谢!但是我通过从http:DThere中删除s解决了这个问题,不需要对代码进行修补。您可以将cacert.pem文件的路径作为verify参数的值传递:
requests.get('https://www.hitbox.tv/,验证class='path/to/cacert.pem')
@nmgeek如果
请求.get
调用是在第三方代码中,那么猴子补丁更容易。如果从第三方代码调用requests.get,这是公平的。在问题中,它位于filename.py(第210行)中,看起来它是CosminZoRR应用程序代码的一部分。
def _monkey_patch_requests():
    orig_send = HTTPAdapter.send
    def _send_no_verify(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
        return orig_send(self, request, stream, timeout, 'cacert.pem' if verify else False, cert, proxies)
    HTTPAdapter.send = _send_no_verify

_monkey_patch_requests()