QGIS: DLL load failed importing _C (solucionado)
Publicado el Actualizado el
ImportError: DLL load failed while importing _C significa que Windows encontró PyTorch y después rechazó cargar una de las DLL compiladas que lo componen. El error aparece en QGIS después de que un plugin instala torch en el Python de QGIS, incluido el nuestro. Instala Microsoft Visual C++ Redistributable (x64) y reinicia Windows: esto lo soluciona en la mayoría de los equipos.
Traceback (most recent call last):
File "C:\...\site-packages\torch\__init__.py", line 141, in <module>
raise err
OSError: [WinError 126] The specified module could not be found.
Error loading "C:\...\site-packages\torch\lib\fbgemm.dll" or one of its dependencies.
ImportError: DLL load failed while importing _C: The specified module could not be found.
En algunos equipos, el mismo fallo menciona otro archivo, pero las soluciones son las mismas:
Error loading "C:\...\site-packages\torch\lib\shm.dll" or one of its dependencies.
Se aplica a Windows 10 y 11, QGIS 3.22 y versiones posteriores, y PyTorch 2.4.0 a 2.8.0, las versiones de Windows que incluyen fbgemm.dll. La versión 2.9.0 eliminó ese archivo.
Si el error muestra [WinError 127] en lugar de 126, detente aquí. Eso significa que la DLL se cargó, pero falta un símbolo dentro de ella. Es una incompatibilidad de versiones entre paquetes, no este error.
La solución rápida
Instala Visual C++ Redistributable (x64)
Ejecuta vc_redist.x64.exe desde aka.ms/vc14/vc_redist.x64.exe. Elige x64 aunque ya tengas x86. Son paquetes independientes y torch necesita x64.
Reinicia Windows
Reinicia el equipo, no solo QGIS. El instalador deja parte del trabajo para el reinicio.
Busca un segundo Python
En un símbolo del sistema, ejecuta where python. Más de un resultado significa que Anaconda, Miniconda o un Python independiente está compitiendo con el de QGIS.
Quita ese Python del PATH
Abre Inicio, busca "variables de entorno", selecciona Editar las variables de entorno del sistema, Variables de entorno, Path. Elimina las entradas del Python que no utilizas en QGIS y cierra sesión en Windows. Después vuelve a iniciarla.
Si el error no cambia, pasa a la Solución 2.
Comprueba que funciona
Abre OSGeo4W Shell desde la carpeta de QGIS en el menú Inicio y ejecuta:
python -c "import torch; print(torch.__version__)"
Un número de versión en su propia línea, sin ningún traceback encima, significa que las DLL se cargan. Ahora repite la prueba donde importa: en QGIS, Plugins, después Python Console y, por último, import torch. Un prompt que no muestre ningún error es el resultado que buscas. Si una de las dos pruebas funciona y la otra falla, están utilizando Pythons diferentes. Vuelve al paso 3.
Solución 2: falta una dependencia de fbgemm.dll
Algunos equipos tienen el redistribuible instalado y aun así no tienen libomp140.x86_64.dll. La solución duradera es pasar a PyTorch 2.9.0 o posterior, que ya no incluye fbgemm.dll. Si necesitas mantener una versión anterior, usuarios del tracker de PyTorch informan de que copiar libomp140.x86_64.dll, que se instala con Visual Studio Community gratuito, permite volver a ejecutar torch. Es una solución alternativa, nunca una corrección del mantenedor, y ninguna wheel de PyTorch incluye ese archivo. No descargues una DLL suelta de un sitio de descargas.
Si el error no cambia, pasa a la Solución 3.
Solución 3: la wheel no corresponde al equipo
Una compilación CUDA en un equipo sin un driver NVIDIA compatible falla en la misma línea. Si no tienes una GPU NVIDIA, fuerza la compilación para CPU:
pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cpu
Si tienes una GPU, utiliza el comando que indica la página de instalación de PyTorch para tu versión de CUDA. Dentro de un entorno conda, instala torch con conda en lugar de pip, para que las bibliotecas de runtime procedan del mismo lugar que el paquete.
Si el error no cambia, pasa a la Solución 4.
Solución 4: el antivirus eliminó un archivo después de la instalación
Abre Seguridad de Windows, después Protección contra virus y amenazas y, por último, Historial de protección. Restaura todo lo que haya eliminado de tu carpeta site-packages, añade esa carpeta a las exclusiones y reinstala torch. La instalación indica que terminó correctamente y la carpeta sigue pareciendo completa, así que nada en pantalla apunta a esta causa.
Si el error no cambia, pasa a ¿Sigue sin funcionar? más abajo.
Por qué ocurre
PyTorch distribuye DLL compiladas, no solo Python puro. fbgemm.dll y sus archivos vecinos en torch/lib enlazan con el runtime de Microsoft C, y Windows se niega a cargar una DLL cuando no encuentra sus propias dependencias. Informa del fallo en la parte superior de la cadena, en _C, el módulo de extensión de torch que realiza la importación. Por eso el mensaje menciona un archivo que está justo ahí en el disco.
La segunda causa es Python 3.8. Desde esa versión, solo se buscan las rutas del sistema, el directorio que contiene el archivo DLL o PYD y los directorios añadidos con add_dll_directory(). PATH y el directorio de trabajo actual ya no se utilizan. Por eso un equipo que tiene Anaconda y QGIS puede entregar al cargador un torch/lib del Python equivocado, y el error no dice cuál eligió. Inicia QGIS desde su propio acceso directo del menú Inicio, nunca desde un shell en el que hayas ejecutado conda activate.
¿Sigue sin funcionar?
AI Segmentation es nuestro plugin que instala PyTorch en el Python de QGIS, así que es el que puede mostrarte este error. Sus modos cloud ejecutan los modelos en nuestros servidores y no necesitan torch local, pero eso no repara torch para ningún otro plugin que lo necesite. Envía la versión de QGIS, el traceback completo y la versión del plugin a stephane.barbot@terra-lab.ai. Te diremos cuál de las cuatro soluciones corresponde.
Preguntas frecuentes
¿Por qué el error menciona _C si el archivo que falta es fbgemm.dll?
_C es el módulo de extensión de torch que realiza la importación, por lo que está en la parte superior de la cadena y Windows informa del fallo ahí. El archivo mencionado en la línea anterior, fbgemm.dll o shm.dll, normalmente sí está presente en el disco. Lo que ese archivo necesita no lo está.
¿Qué versiones de PyTorch están afectadas?
Las wheels de Windows de la versión 2.4.0 a la 2.8.0 incluyen fbgemm.dll. La versión 2.9.0 lo eliminó, así que actualizar elimina este fallo concreto. El texto _C todavía puede aparecer por otra razón, como una compilación CUDA en un equipo sin un driver compatible.
¿Cuál es la diferencia entre WinError 126 y WinError 127?
126 significa que Windows no pudo encontrar el módulo o una de sus dependencias, y ese es este error. 127 significa que la DLL se cargó, pero falta un símbolo dentro de ella. Es una incompatibilidad de versiones entre dos paquetes. Ninguna de las soluciones anteriores ayuda con un error 127.
¿Puedo descargar libomp140.x86_64.dll de un sitio de DLL?
No. Obtenlo de la instalación gratuita de Visual Studio Community, que es de donde lo consiguen las personas que informan de esta solución alternativa en el tracker de PyTorch. Una copia de un sitio de descargas no es el mismo archivo y, de todos modos, ninguna wheel de Windows de PyTorch incluye este archivo.
Si encuentras el mismo texto en GDAL, la versión de este error para _gdal` tiene sus propias soluciones. Para saber qué hace la IA en QGIS una vez que torch se carga, empieza en el QGIS AI hub.


