Vai al contenuto
Torna al blog
QGIS
Troubleshooting

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

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

Installa il Microsoft Visual C++ Redistributable (x64) da aka.ms/vs/17/release/vc_redist.x64.exe, poi riavvia Windows. PyTorch include DLL compilate che richiedono il runtime C di Microsoft, e Windows rifiuta di caricarle quando manca o non è aggiornato.

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.

Vale per Windows 10 e 11, QGIS 3.22 e versioni successive, e qualsiasi PyTorch 2.x installato nel Python di QGIS o in un ambiente di un plugin.

Perché succede

Quattro cause stampano la stessa riga. Nell'ordine in cui si rivelano essere quelle reali:

  1. Il Visual C++ Redistributable (x64) manca o è obsoleto. fbgemm.dll e le altre DLL di torch si collegano a questo runtime.
  2. Un secondo Python sul computer (Anaconda, Miniconda o un'installazione autonoma) mette le proprie DLL di torch nella posizione in cui Windows le trova per prime. Da Python 3.8, le DLL delle estensioni provengono da os.add_dll_directory() invece che da PATH, e una configurazione mista registra la cartella sbagliata.
  3. La wheel installata non corrisponde al computer. Una build CUDA su un computer senza un driver NVIDIA compatibile fallisce nello stesso modo.
  4. Un antivirus o una policy aziendale di controllo delle applicazioni ha messo in quarantena un file .pyd o .dll dopo il completamento dell'installazione.

Per distinguerle, esegui where python in un Prompt dei comandi. Più risultati indicano la causa 2. Un solo risultato, con l'errore che persiste dopo un riavvio seguito all'installazione del redistributable, indica la causa 3 o 4.

La soluzione

Installa il Visual C++ Redistributable (x64)

Scarica vc_redist.x64.exe da Microsoft ed eseguilo. Scegli la build x64 anche su un computer che abbia già quella x86.

Riavvia Windows

Un riavvio completo, non solo un riavvio di QGIS. L'elenco di ricerca delle DLL viene letto una volta per processo, e il programma di installazione spesso lascia alcune operazioni da completare al riavvio.

Prova l'importazione da sola

Apri OSGeo4W Shell dalla cartella di QGIS nel menu Start ed esegui python -c "import torch". Un prompt pulito significa che ha funzionato. Dentro QGIS, la stessa prova si trova in Plugin, poi Console Python, quindi import torch.

Rimuovi il secondo Python da PATH

Se where python ha restituito più di un percorso, apri Start, digita "variabili d'ambiente", apri Modifica le variabili d'ambiente di sistema, poi Variabili d'ambiente, quindi Path. Rimuovi le voci appartenenti al Python che non usi in QGIS. Esci dalla sessione e accedi di nuovo.

Reinstalla la wheel adatta al computer

Su un computer senza GPU NVIDIA, forza la build CPU: pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cpu. Se hai una GPU, usa il comando indicato dalla pagina di installazione di PyTorch per la tua versione di CUDA.

Se non ha funzionato

  • Alcuni computer hanno il redistributable ma continuano a non avere una dipendenza, libomp140.x86_64.dll. Viene installata con Visual Studio Community, che è gratuito. Non scaricare una DLL singola da un sito di download.
  • Controlla Sicurezza di Windows, poi Protezione da virus e minacce, quindi Cronologia della protezione. Ripristina ciò che è stato rimosso dalla cartella site-packages e aggiungi quella cartella alle esclusioni prima di reinstallare.
  • In un ambiente conda, installa torch con conda invece che con pip, così le librerie runtime provengono dalla stessa posizione del pacchetto.