cuando hago solicitudes de Api a binance, después de construir main.py a exe usando pyinstaller, aparece este error:
OSError: Could not find a suitable TLS CA certificate bundle, invalid path: C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI76602\certifi\cacert.pemen el servidor donde ejecuto el bot y esto en la máquina local:
OSError: Could not find a suitable TLS CA certificate bundle, invalid path: C:\Users\USER\PycharmProjects\pythonproject2\dist\cacert.pemla ubicación exacta del error para ambos es:
File "requests\adapters.py", line 227, in cert_verifyEn el servidor, el programa se había estado ejecutando durante más de una semana sin parar y sin problemas hasta hace 2 días cuando comencé a recibir el error OSE. Pero solo las llamadas a la API causaron el error con el programa aún ejecutándose, los websockets aún recibían datos.
Intenté agregar el código en la respuesta aceptada de las solicitudes de python. No puedo encontrar una carpeta con un certificado cuando se convierte a .exe.
También probé:
pip config set global.cert "path\to\cacert.pem"con la ruta correcta a cacert.pem, encontrada usando
python -c "import certifi; print(certifi.where())"Nada de eso funcionó, actualmente la única solución que encontré es copiar manualmente el archivo cacert.pem en la ubicación donde OSError dice que lo estaba buscando (el archivo cacert.pem).
Pero nunca tuve que hacer esto antes. Recientemente actualicé mi versión de python y luego volví a bajar de categoría debido a problemas con el websocket. Hice esto desinstalando completamente Python 3.10 y eliminando todas las referencias de PATH, luego reinstalé 3.9.7 y agregué todas las variables de PATH.
¿Alguien tiene alguna idea de qué podría estar causando esto? Cuando ejecuto el script en pycharm, no aparece este error, también noté que global.cert no es la misma ruta que OSError en la máquina local, pero no tengo idea de cómo cambiar el aspecto del archivo cacert.pem .
Ok, por ahora he encontrado una solución temporal. Lo que también sucedía era que donde el programa buscaba el archivo cacert.pem, no existía tal archivo. Entonces, la solución que encontré: en la terminal de su proyecto, vaya a Bibliotecas externas -> Python3.9 -> paquetes del sitio -> certifi -> core.py
Luego busca este Código:
import os try: from importlib.resources import path as get_path, read_text _CACERT_CTX = None _CACERT_PATH = None def where(): .............Ahora, cuando ejecute el programa, obtenga la ruta donde busca cacert.pem cuando arroja el error. Pegue el archivo cacert.pem en la carpeta Temp o Temp\2, etc. luego copie la ruta. Cambia el código a:
import os try: from importlib.resources import path as get_path, read_text _CACERT_CTX = None _CACERT_PATH = "copied path" def where(): .............Además, he compilado exactamente el mismo código en un nuevo sistema y todo funciona bien. Entonces, lo más probable es que el problema sea cuando instalé y desinstalé 3.10. Actualizaré si encuentro la razón exacta.