【问题标题】:OSError: Could not find a suitable TLS CA certificate bundleOSError:找不到合适的 TLS CA 证书包
【发布时间】:2022-01-02 18:10:41
【问题描述】:

在向 binance 发出 Api 请求时,在使用 pyinstaller 将 main.py 构建为 exe 后,我收到此错误:

OSError: Could not find a suitable TLS CA certificate bundle, invalid path: C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI76602\certifi\cacert.pem 

在我运行机器人的服务器上和本地机器上:

OSError: Could not find a suitable TLS CA certificate bundle, invalid path: C:\Users\USER\PycharmProjects\pythonproject2\dist\cacert.pem 

两者错误的确切位置是:

File "requests\adapters.py", line 227, in cert_verify

在服务器上,该程序已经运行了一个多星期,没有任何问题,直到 2 天前我开始收到 OSError。但只有 API 调用导致错误,程序仍在运行,websocket 仍在接收数据。

我尝试在python requests can't find a folder with a certificate when converted to .exe接受的答案中添加代码

我也试过了:

pip config set global.cert "path\to\cacert.pem"

使用 cacert.pem 找到正确的路径

python -c "import certifi; print(certifi.where())"

这些都不起作用,目前我发现的唯一解决方法是将 cacert.pem 文件手动复制到 OSError 说它正在寻找它的位置(cacert.pem 文件)。

但我以前从未这样做过。最近我更新了我的 python 版本,然后由于 websocket 问题再次降级。我通过完全卸载 python 3.10 并从 PATH 中删除所有引用然后重新安装 3.9.7 并添加所有 PATH 变量来做到这一点。

有人知道是什么原因造成的吗?当我在 pycharm 本身中运行脚本时,我没有收到此错误,我还注意到 global.cert 与本地计算机上的 OSError 路径不同,但我不知道如何从 cacert.pem 文件中更改它的外观.

【问题讨论】:

    标签: python ssl python-requests pycharm ca


    【解决方案1】:

    好的,现在我找到了一个临时解决方案。同样发生的情况是程序在寻找 cacert.pem 文件的地方,没有这样的文件。所以我找到了解决方法: 在您的项目终端中,转到 External Libraries -> Python3.9 -> site-packages -> certifi -> core.py

    然后查找此代码:

    import os
    
    try:
        from importlib.resources import path as get_path, read_text
    
        _CACERT_CTX = None
        _CACERT_PATH = None
    
        def where():
        .............
    

    现在,当您运行程序时,获取它在抛出错误时查找 cacert.pem 的路径。将 cacert.pem 文件粘贴到 Temp 文件夹或 Temp\2 等。然后复制路径。 将代码更改为:

    import os
    
    try:
        from importlib.resources import path as get_path, read_text
    
        _CACERT_CTX = None
        _CACERT_PATH = "copied path"
    
        def where():
        .............
    

    另外,我在新系统上编译了完全相同的代码,一切正常。所以很可能问题出在我安装和卸载 3.10 时。如果我找到确切的原因会更新。

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多