Pular para o conteúdo
Voltar ao blog
QGIS
Troubleshooting

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:

  1. O Visual C++ Redistributable (x64) está ausente ou desatualizado. fbgemm.dll e as outras DLLs do torch são vinculadas a ele.
  2. 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.
  3. 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.
  4. O antivírus ou uma política corporativa de controle de aplicativos colocou um .pyd ou .dll em 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-packages e 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.