ImportError: DLL load failed while importing onnxruntime_pybind11_state A dynamic link library initialization routine failed Este artículo explica por qué aparece este error al convertir un proyecto Python a ejecutable con PyInstaller y ofrece soluciones prácticas adaptadas a un proyecto RealtimeSTT con PyQt5
Contexto El proyecto utiliza el paquete RealtimeSTT junto con PyQt5 y funciona correctamente cuando se ejecuta con el intérprete de Python. Al crear el ejecutable con PyInstaller el arranque falla con un error de carga de DLL relacionado con onnxruntime en el módulo onnxruntime_pybind11_state
Causas más probables 1 Dependencias nativas faltantes o no incluidas en el bundle de PyInstaller, en especial las DLL de onnxruntime y sus dependencias como las redistribuibles de Microsoft Visual C++. 2 Incompatibilidad de arquitectura entre Python, paquetes y librerías nativas por ejemplo mezclar 32 bits y 64 bits. 3 Uso de la versión GPU de onnxruntime sin incluir las DLL de CUDA necesarias o sin tener instalados los drivers y runtimes de CUDA correctos. 4 Compresión o inclusión incorrecta de las DLL por parte de UPX u otras opciones de empaquetado
Pasos recomendados para resolver el problema 1 Verificar redistribuible de Visual C C Instalación de Microsoft Visual C Redistributable para Visual Studio 2015 2017 2019 y 2022 en su versión adecuada a la arquitectura del sistema. 2 Comprobar arquitectura Asegúrese de que Python y todos los paquetes instalados son de la misma arquitectura por ejemplo Python 64 bits y paquetes 64 bits. 3 Incluir las DLL nativas de onnxruntime en el build Con PyInstaller hay que agregar las DLL dinámicas de onnxruntime al apartado binaries del spec o utilizar un hook para recopilar dinámicos. En la práctica hay que localizar la carpeta del paquete onnxruntime en site packages y añadir los archivos onnxruntime dll y cualquier pyd que aparezca en la carpeta capi al listado de binaries del spec. 4 Evitar UPX y comprimir librerías Evite comprimir las DLL nativas con UPX durante la depuración ya que puede interferir con la inicialización de la librería. 5 Incluir librerías CUDA si usa onnxruntime GPU Si está usando onnxruntime con soporte GPU incluya las DLL de CUDA y cuDNN necesarias y asegúrese de que los drivers y runtimes de CUDA instalados coinciden con la versión requerida por onnxruntime. 6 Añadir rutas al PATH en tiempo de ejecución Una solución robusta consiste en, antes de importar onnxruntime en tiempo de ejecución dentro del ejecutable, añadir la ruta donde se han extraído las DLL de onnxruntime a la variable de entorno PATH para que Windows encuentre las dependencias nativas. 7 Depuración con herramientas de dependencias Use herramientas como Dependency Walker o la utilidad de Windows para listar dependencias faltantes y así identificar la DLL concreta que falla en la inicialización
Consejos prácticos para el spec de PyInstaller 1 Agregar manualmente los binarios nativos de onnxruntime y las DLL de torch que ya tiene listadas para asegurar que todas las librerías nativas van en la carpeta del ejecutable. 2 Crear un hook personalizado para onnxruntime que recopile dynamic libraries y data files del paquete onnxruntime y lo registre en hidden imports si fuera necesario. 3 Mantener console True y debug True mientras depura para ver trazas completas y mensajes de error. 4 Probar primero creando un bundle en carpeta en lugar de onefile para inspeccionar el contenido y verificar que los DLL están presentes en la carpeta dist
Prueba rápida para confirmar la causa Ejecutar el ejecutable desde consola y observar el mensaje de error identificar la DLL concreta que falta o que no inicializa y comprobar en la carpeta del ejecutable si esa DLL está presente y si su arquitectura es correcta
Si todo falla y necesita ayuda profesional Q2BSTUDIO puede ayudar Somos Q2BSTUDIO empresa especializada en desarrollo de software a medida y aplicaciones a medida con amplia experiencia en inteligencia artificial ciberseguridad servicios cloud aws y azure servicios de inteligencia de negocio y soluciones con agentes IA y power bi Ofrecemos análisis del entorno de despliegue diagnóstico de errores nativos en Windows inclusión correcta de librerías nativas y optimización de builds PyInstaller para producción Si desea un servicio a medida podemos auditar su proyecto RealtimeSTT preparar un spec robusto y entregar un instalador estable y probado
Palabras clave para mejorar posicionamiento aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws azure servicios inteligencia de negocio ia para empresas agentes IA power bi
Resumen rápido 1 Instale Visual C Redistributable 2 Verifique arquitectura 3 Incluya DLLs de onnxruntime y dependencias en binaries del spec o mediante hook 4 Evite UPX durante la depuración 5 Si usa GPU incluya DLLs de CUDA y cuDNN 6 Añada rutas al PATH antes de importar onnxruntime 7 Use herramientas de dependencias para localizar faltantes y si necesita apoyo técnico contacte con Q2BSTUDIO
Si desea puedo ayudar a generar un spec de PyInstaller ajustado a su proyecto revisar las DLL que faltan o preparar un hook personalizado para onnxruntime contacte con Q2BSTUDIO y le orientamos sobre los siguientes pasos