Ga naar inhoud
Terug naar blog
QGIS
Troubleshooting

QGIS op Windows: ImportError 'DLL load failed while importing _C' oplossen

ImportError: DLL load failed while importing _C in QGIS on Windows

Installeer de Microsoft Visual C++ Redistributable (x64) via aka.ms/vs/17/release/vc_redist.x64.exe en start Windows daarna opnieuw op. PyTorch levert gecompileerde DLL's die de Microsoft C-runtime nodig hebben. Windows weigert ze te laden wanneer die ontbreekt of verouderd is.

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.

Van toepassing op Windows 10 en 11, QGIS 3.22 en later, en elke PyTorch 2.x-installatie in de QGIS Python-omgeving of in een plugin-omgeving.

Waarom dit gebeurt

Vier oorzaken leveren dezelfde regel op. In de volgorde waarin ze in de praktijk de echte oorzaak blijken:

  1. De Visual C++ Redistributable (x64) ontbreekt of is verouderd. fbgemm.dll en de andere torch-DLL's linken hieraan.
  2. Een tweede Python op je computer (Anaconda, Miniconda of een zelfstandige installatie) plaatst zijn eigen torch-DLL's op een plek waar Windows ze als eerste vindt. Sinds Python 3.8 komen extensie-DLL's uit os.add_dll_directory() in plaats van uit PATH, en een gemengde installatie registreert de verkeerde map.
  3. De geïnstalleerde wheel past niet bij de computer. Een CUDA-build op een computer zonder passende NVIDIA-driver mislukt op dezelfde manier.
  4. Antivirussoftware of een bedrijfsbeleid voor applicatiebeheer heeft een .pyd- of .dll-bestand in quarantaine geplaatst nadat de installatie was voltooid.

Voer where python uit in een Command Prompt om de oorzaken uit elkaar te houden. Meerdere resultaten wijzen op oorzaak 2. Eén resultaat, terwijl de fout na een herstart en installatie van de redistributable blijft bestaan, wijst op oorzaak 3 of 4.

De oplossing

Install the Visual C++ Redistributable (x64)

Download vc_redist.x64.exe from Microsoft and run it. Take the x64 build even on a machine that also has the x86 one.

Restart Windows

Een herstart, niet alleen QGIS opnieuw starten. De DLL-zoeklijst wordt één keer per proces ingelezen en het installatieprogramma laat vaak werk over voor de herstart.

Test the import on its own

Open de OSGeo4W Shell vanuit de QGIS-map in het Startmenu en voer python -c "import torch" uit. Een schone prompt betekent dat het is gelukt. Binnen QGIS is dezelfde test: Plugins, dan Python Console, dan import torch.

Remove the second Python from PATH

Als where python meer dan één pad retourneerde, open je Start, typ je "environment variables", open je Edit the system environment variables, daarna Environment Variables en vervolgens Path. Verwijder de vermeldingen die bij de Python horen die je niet in QGIS gebruikt. Meld je af en weer aan.

Reinstall the wheel that matches the machine

Op een computer zonder NVIDIA GPU forceer je de CPU-build: pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cpu. Met een GPU gebruik je de opdracht die de PyTorch-installatiepagina voor jouw CUDA-versie geeft.

Als dat niet heeft gewerkt

  • Op sommige computers is de redistributable aanwezig, maar ontbreekt nog steeds een dependency, libomp140.x86_64.dll. Die wordt meegeleverd met Visual Studio Community, dat gratis kan worden geïnstalleerd. Download geen losse DLL van een downloadsite.
  • Controleer Windows Security, daarna Virus and threat protection en vervolgens Protection history. Zet alles wat uit je site-packages-map is verwijderd terug en voeg die map vóór het opnieuw installeren toe aan de uitsluitingen.
  • Installeer torch in een conda-omgeving met conda in plaats van pip, zodat de runtimebibliotheken uit dezelfde locatie komen als het pakket.