ImportError: DLL load failed while importing _C w QGIS na Windows
ImportError: DLL load failed while importing _C in QGIS on Windows
Zainstaluj Microsoft Visual C++ Redistributable (x64) z adresu aka.ms/vs/17/release/vc_redist.x64.exe, a następnie uruchom ponownie Windows. PyTorch dostarcza skompilowane biblioteki DLL, które wymagają środowiska uruchomieniowego Microsoft C, a Windows odmawia ich załadowania, gdy go brakuje lub jest nieaktualne.
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.
Dotyczy Windows 10 i 11, QGIS 3.22 i nowszych wersji oraz dowolnego PyTorch 2.x zainstalowanego w Pythonie QGIS lub w środowisku pluginu.
Dlaczego tak się dzieje
Cztery przyczyny powodują wyświetlenie tego samego wiersza. W kolejności, w jakiej okazują się prawdziwe:
- Brakuje Visual C++ Redistributable (x64) albo jest ono nieaktualne.
fbgemm.dlli pozostałe biblioteki DLL torch są z nim połączone. - Drugi Python na komputerze (Anaconda, Miniconda lub samodzielna instalacja) umieszcza własne biblioteki DLL torch w miejscu, w którym Windows znajduje je jako pierwsze. Od Python 3.8 biblioteki DLL rozszerzeń pochodzą z
os.add_dll_directory(), a mieszana konfiguracja rejestruje niewłaściwy folder. - Zainstalowany wheel nie pasuje do komputera. Wersja CUDA na komputerze bez odpowiedniego sterownika NVIDIA powoduje ten sam błąd.
- Program antywirusowy lub firmowa polityka kontroli aplikacji poddały kwarantannie jeden plik
.pydlub.dllpo zakończeniu instalacji.
Aby je rozróżnić, uruchom where python w wierszu polecenia. Kilka wyników wskazuje na przyczynę 2. Jeden wynik oraz utrzymywanie się błędu po ponownym uruchomieniu komputera i instalacji pakietu Redistributable wskazują na przyczynę 3 lub 4.
Rozwiązanie
Install the Visual C++ Redistributable (x64)
Pobierz vc_redist.x64.exe od Microsoft i uruchom go. Wybierz wersję x64, nawet jeśli na komputerze jest również wersja x86.
Restart Windows
Uruchom ponownie komputer, nie tylko QGIS. Lista wyszukiwania bibliotek DLL jest odczytywana raz dla każdego procesu, a instalator często pozostawia część pracy do wykonania podczas ponownego uruchomienia.
Test the import on its own
Otwórz OSGeo4W Shell z folderu QGIS w menu Start i uruchom python -c "import torch". Czysty prompt oznacza, że import działa. W QGIS ten sam test wykonasz przez Wtyczki, następnie Konsola Pythona, a potem import torch.
Remove the second Python from PATH
Jeśli where python zwróciło więcej niż jedną ścieżkę, otwórz menu Start, wpisz "environment variables", otwórz Edit the system environment variables, następnie Environment Variables, a potem Path. Usuń wpisy należące do Pythona, którego nie używasz w QGIS. Wyloguj się i zaloguj ponownie.
Reinstall the wheel that matches the machine
Na komputerze bez NVIDIA GPU wymuś wersję CPU: pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cpu. Jeśli masz GPU, użyj polecenia podanego na stronie instalacji PyTorch dla używanej wersji CUDA.
Jeśli to nie zadziałało
- Na niektórych komputerach Redistributable jest zainstalowane, ale nadal brakuje zależności
libomp140.x86_64.dll. Jest ona dostarczana z Visual Studio Community, które można zainstalować bezpłatnie. Nie pobieraj pojedynczej biblioteki DLL z serwisu z plikami do pobrania. - Otwórz Zabezpieczenia Windows, następnie Ochrona przed wirusami i zagrożeniami, a potem Historię ochrony. Przywróć wszystkie pliki usunięte z folderu
site-packagesi dodaj ten folder do wykluczeń przed ponowną instalacją. - W środowisku conda zainstaluj torch przez conda zamiast pip, aby biblioteki uruchomieniowe pochodziły z tego samego miejsca co pakiet.
Czytaj dalejAI Segmentation dla QGIS: kompletny przewodnik

