pycharm OSError:找不到合适的TLS CA证书包

qv7cva1a  于 2022-11-08  发布在  PyCharm
关注(0)|答案(1)|浏览(754)

在使用pyinstaller将www. example. com构建到exe后,向binance发出Api请求时main.py,我收到以下错误:

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

在我运行bot的服务器上,在本地计算机上:

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调用导致的错误与程序仍在运行,websockets仍在接收数据.
我尝试在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中的所有引用,然后重新安装python 3.9.7并添加所有PATH变量来完成这一任务。
有人知道是什么原因导致的吗?当我在pycharm中运行脚本时,我没有得到这个错误,我还注意到global.cert与本地机器上的OSError的路径不同,但我不知道如何从cacert.pem文件中更改它的位置。

kcwpcxri

kcwpcxri1#

现在我找到了一个临时的解决方案。同样发生的是,程序在寻找cacert.pem文件的地方,没有这样的文件。所以我找到了解决方案:在您的项目终端中,转到外部库-〉Python3.9 -〉站点包-〉证书-〉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。将更新,如果我找到确切的原因。

相关问题