Como corrigir o erro ImportError: DLL load failed while importing _C no QGIS no Windows
ImportError: DLL load failed while importing _C in QGIS on Windows
Instale o Microsoft Visual C++ Redistributable (x64) a partir de aka.ms/vs/17/release/vc_redist.x64.exe e reinicie o Windows. O PyTorch distribui DLLs compiladas que precisam do runtime C da Microsoft, e o Windows se recusa a carregá-las quando ele está ausente ou desatualizado.
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.
Aplica-se ao Windows 10 e 11, ao QGIS 3.22 e posteriores, e a qualquer PyTorch 2.x instalado no Python do QGIS ou no ambiente de um plugin.
Por que isso acontece
Quatro causas exibem a mesma linha. Na ordem em que realmente se revelam:
- O Visual C++ Redistributable (x64) está ausente ou desatualizado.
fbgemm.dlle as outras DLLs do torch são vinculadas a ele. - Um segundo Python na sua máquina (Anaconda, Miniconda, uma instalação independente) coloca suas próprias DLLs do torch onde o Windows as encontra primeiro. Desde o Python 3.8, as DLLs de extensão vêm de
os.add_dll_directory(), em vez do PATH, e uma instalação mista registra a pasta errada. - A wheel instalada não corresponde à máquina. Uma compilação CUDA em um computador sem um driver NVIDIA compatível falha da mesma forma.
- O antivírus ou uma política corporativa de controle de aplicativos colocou um
.pydou.dllem quarentena depois que a instalação terminou.
Para diferenciá-las, execute where python em um Prompt de Comando. Vários resultados apontam para a causa 2. Um único resultado, com o erro persistindo após uma reinicialização depois da instalação do redistributable, aponta para a causa 3 ou 4.
A correção
Instale o Visual C++ Redistributable (x64)
Baixe vc_redist.x64.exe da Microsoft e execute-o. Escolha a compilação x64 mesmo em uma máquina que também tenha a versão x86.
Reinicie o Windows
Uma reinicialização, não apenas uma reinicialização do QGIS. A lista de pesquisa de DLLs é lida uma vez por processo, e o instalador costuma deixar tarefas para a reinicialização.
Teste a importação isoladamente
Abra o OSGeo4W Shell na pasta do QGIS, pelo menu Iniciar, e execute python -c "import torch". Um prompt limpo significa que funcionou. Dentro do QGIS, o mesmo teste fica em Plugins, depois Python Console, e então import torch.
Remova o segundo Python do PATH
Se where python retornar mais de um caminho, abra o menu Iniciar, digite "environment variables", abra Edit the system environment variables, depois Environment Variables, e então Path. Remova as entradas que pertencem ao Python que você não usa no QGIS. Saia da sessão e entre novamente.
Reinstale a wheel compatível com a máquina
Em um computador sem GPU NVIDIA, force a compilação para CPU: pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cpu. Com uma GPU, use o comando fornecido pela página de instalação do PyTorch para a sua versão do CUDA.
Se isso não funcionou
- Algumas máquinas têm o redistributable e ainda assim não encontram uma dependência,
libomp140.x86_64.dll. Ela vem com o Visual Studio Community, que é uma instalação gratuita. Não baixe uma DLL avulsa de um site de downloads. - Verifique Windows Security, depois Virus and threat protection, e então Protection history. Restaure tudo o que foi removido da sua pasta
site-packagese adicione essa pasta às exclusões antes de reinstalar. - Em um ambiente conda, instale o torch com conda em vez de pip, para que as bibliotecas de runtime venham do mesmo local que o pacote.
Leia a seguirAI Segmentation para QGIS: o guia completo

