No Windows, o TensorFlow relata um ou ambos os erros a seguir após a execução de uma import tensorflow
instrução:
No module named "_pywrap_tensorflow"
DLL load failed.
No Windows, o TensorFlow relata um ou ambos os erros a seguir após a execução de uma import tensorflow
instrução:
No module named "_pywrap_tensorflow"
DLL load failed.
Respostas:
O problema era a biblioteca cuDNN para mim - por algum motivo cudnn-8.0-windows10-x64-v6.0 NÃO estava funcionando - usei cudnn-8.0-windows10-x64-v5.1 - TUDO BOM!
Minha configuração trabalhando com Win10 64 e Nvidia GTX780M:
Se você executar o Windows 32, certifique-se de obter as versões de 32 bits dos arquivos mencionados acima.
No meu caso, o arquivo "cudnn64_6.dll" na pasta / bin teve que ser renomeado para "cudnn64_5.dll" para que o erro desaparecesse. Eu facilmente gastei duas horas para descobrir isso e segui o guia de instalação oficial ao pé da letra. Isso é verdade para a instalação via pip (com suporte oficial) e conda (com suporte da comunidade).
cudnn64_6.dll
não será cudnn64_5.dll
.
cudnn64_7.dll
de cudnn64_6.dll
ajuda.
Qualquer um dos erros indica que seu sistema não foi instalado MSVCP140.DLL
, o que o TensorFlow exige.
Para corrigir esse erro:
MSVCP140.DLL
está em sua %PATH%
variável.MSVCP140.DLL
não estiver em seu %PATH%
, instale o
Visual C ++ 2015 redistribuível (versão x64), que contém essa DLL.Para tensorflow com CPU apenas:
Eu instalei o Tensorflow usando o comando:
pip3 install --upgrade tensorflow
Este instalado, tensorflow 1.7
mas não foi possível importar o tensorflow de dentro python 3.6.5 amd64
usando:
import tensorflow as tf
Então, eu rebaixei a versão do tensorflow de 1.7
para 1.5
usar o seguinte comando:
pip3 install tensorflow==1.5
Isso desinstalou a versão anterior e instalou 1.5
. Agora funciona.
Parece que minha CPU não suporta o conjunto de instruções AVX que é necessário emtensorflow 1.7
Eu tinha MSVCP140.DLL
nas pastas do sistema e .DLL na variável PATHEXT na Variável de Ambiente.
Tenho Win7 Pro de 64 bits na CPU AMD, sem GPU. Eu estava seguindo as instruções em "Instalando com pip nativo" em https://www.tensorflow.org/install/install_windows . A etapa de instalação correu bem, mas a tentativa de importar tensorflow produziu o infame:
ImportError: No module named '_pywrap_tensorflow_internal'
Esta parece ser uma daquelas situações em que muitas coisas não relacionadas podem dar errado, dependendo da configuração, todas em cascata para o mesmo erro.
No meu caso, instalar o MSVCP140.DLL foi a resposta.
Você MSVCP140.DLL
já se
C:\Windows\System32\MSVCP140.DLL
EC:\Windows\SysWOW64\MSVCP140.DLL
.Eu instalei manualmente, o que era desnecessário (o redistribuível não é toda a bagunça de desenvolvimento do Visual C ++ e não é grande). Use o link postado anteriormente neste tópico para instalá-lo: Visual C ++ 2015 redistributable .
Além disso, recomendo que você substitua o diretório de instalação padrão do Python e o coloque em qualquer lugar que não seja C:\Program Files
, porque o Windows tenta proteger os arquivos contra gravação lá, o que causa problemas posteriormente.
TensorFlow
requer MSVCP140.DLL
, que pode não estar instalado em seu sistema. Para resolver o problema, abra o terminal e digite ou cole este link:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl
Observe que isso é para instalar a versão somente CPU do TensorFlow.
Para aqueles que usam hardware mais antigo:
Você pode obter este mesmo erro por ter uma CPU mais antiga usando tensorflow-gpu 1.6.
Se sua cpu foi feita antes de 2011, sua versão max tensorflow-gpu é 1.5.
O Tensorflow 1.6 requer instruções AVX em sua cpu. Verificado aqui: documentos do Tensorflow Github
CPUs habilitadas para AVX: CPUs Wiki AVX
O que eu fiz em meu ambiente conda para tensorflow:
pip install --ignore-installed --upgrade tensorflow-gpu==1.5
O problema para mim era a biblioteca cuDNN que não correspondia aos requisitos da placa gráfica. Eu baixei a versão 6.0, mas para minha GTX980ti, mas o recurso de computação recomendado no site da nvidia era 5.1 ( http://developer.nvidia.com/cuda-gpus ), então baixei 5.1 e substituí a versão 6.0 e assim que eu ' fiz isso, começou a funcionar.
Depois de muitas tentativas e erros, e certificando-se de que VC ++ 2015 Redistributable , cuDNN DLL e todas as outras dependências estão acessíveis a partir do PATH, parece que o Tensorflow GPU funciona apenas com Python 3.5.2
(no momento desta escrita)
Então, se você estiver usando Anaconda
conda create -n tensorflow-gpu python=3.5.2
activate tensorflow-gpu
pip install tensorflow-gpu
Em seguida, abra o interpretador python e verifique
>>> import tensorflow as tf
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Dispositivo encontrado 0 com propriedades:
nome: GeForce 940M
maior: 5 menor: 0
memoryClockRate (GHz) 1.176
pciBusID 0000: 06: 00.0
Memória total: 2,00GiB
Memória livre: 1,66GiB
Créditos: este guia bacana
Para cada versão do Tensorflow, ele requer uma versão diferente do CuDnn. Em www.tensorflow.org , eles não mencionaram isso no guia de instalação!
Meu caso usa o tensorflow versão 1.3 que usa cuDNN 6. https://github.com/tensorflow/tensorflow/releases .
Por favor, verifique sua versão tensorfow e a versão cuDNN se elas combinam.
E defina o ambiente do caminho para cuDNN, se ainda não funcionar, verifique a resposta de @Christ Han .
Publiquei uma abordagem geral para solucionar o problema de "falha no carregamento de DLL" neste artigo em sistemas Windows. Para referência:
Use a DLL do analisador de dependência dependências para analisar
<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd
e determinar a DLL exata faltando (indicado por um?
lado a DLL). O caminho do arquivo .pyd é baseado na versão da GPU do TensorFlow 1.9 que instalei. Não tenho certeza se o nome e o caminho são os mesmos em outras versões do TensorFlow.Procure informações sobre a DLL ausente e instale o pacote apropriado para resolver o problema.
All files (*.*)
próximo ao nome do arquivo em vez de apenas exe files (*.exe, *.dll)
.
Alguém pode ficar tentado a manter o Powershell / cmd aberto no Windows. Passei um tempo razoável até decidir fechar e reabrir meu Powershell apenas para perceber que fiz tudo certo.
Dll não encontrado. Instale o Visual C ++ 2015 redistribuível para corrigir.
O problema era a biblioteca cuDNN para mim. Consegui executar o código de teste após adicionar o diretório (possivelmente pasta bin) da DLL cuDNN (não o arquivo LIB) no PATH do Windows.
Para referência, instalei o TensorFlow da fonte usando PIP e meu SO: Windows 7 e IDE: Visual Studio 2015.
Com o TensorFlow versão 1.3.0, você precisa usar o Cudnn 6.0 em vez do Cudnn 5.0, pois o Cudnn 5.0 está apresentando esse erro. Não se esqueça de adicionar a variável de caminho ao Cudnn 6.0. Com o cudnn64_6.dll seu Tensorflow funcionará bem. Leia o link abaixo. https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-130
Meus dois centavos:
Tive muitos problemas ao tentar instalar o CUDA 8.0 corretamente no Windows 7. Eu tinha uma versão anterior instalada e queria atualizar, então desinstalei e tentei instalar o CUDA 8.0 (para tensorflow 1.3). A instalação falhou todas as vezes, tentei fazer o downgrade para CUDA 7.5 e consegui instalá-lo, mas tive muitos problemas com o tensorflow (semelhante ao problema PATH descrito aqui). Resumindo: o que funcionou para mim foi:
1) Desinstale CADA componente NVIDIA (exceto o driver de vídeo)
2) Baixe o kit de ferramentas CUDA 8.0 (e o patch) https://developer.nvidia.com/cuda-downloads
3) Verifique o CheckSum MD5 (usei o MS https://www.microsoft.com/en-ca/download/confirmation.aspx?id=11533 mas qualquer um serviria) para ter certeza de que estavam OK (aconteceu várias vezes que o instalador não foi baixado corretamente porque meu roteador WiFi aparentemente).
4) Execute o instalador do kit de ferramentas CUDA como root
5) baixe o cudnn 8.0 v6 e adicione sua localização à variável PATH https://developer.nvidia.com/rdp/cudnn-download
Espero que ajude e evite algumas dores de cabeça ...
NOTA: Este script me ajudou muito a depurar o problema! (Obrigado, mrry) https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Vou tentar dar a solução que funcionou para mim. Parece que diferentes conjuntos de problemas podem levar a essa situação.
O software de 32 bits funciona em sistemas operacionais de 64 bits. Instalei o anaconda-3 (32 bits) em meu SO de 64 bits. Estava funcionando perfeitamente bem. Decidi instalar o tensorflow na minha máquina e ele não iria instalar a princípio. Eu estava usando o ambiente conda para instalar o Tensorflow e recebi este erro.
A solução é se você estiver executando um sistema operacional de 64 bits, instale o anaconda de 64 bits e se você estiver executando um sistema operacional de 32 bits, então o anaconda de 32 bits . Então siga o procedimento padrão mencionado no site do tensorflow para windows (instalação do anaconda). Isso tornou possível instalar o tensorflow sem nenhum problema.
minha resposta é apenas para usuários do Windows 10, pois tentei o seguinte no Windows 10. Estendendo algumas das respostas acima, sugiro o seguinte: Se você estiver usando o anaconda, pode evitar tudo e simplesmente instalar o anaconda-navigator usando o comando
conda install -c anaconda anaconda-navigator
Então você pode lançar o navegador a partir do prompt de comando usando o comando
anaconda-navigator
Ao executar este comando, você obtém um gui simples onde você pode criar um ambiente virtual, criar o ambiente com python = 3.5.2 e instalar o módulo tensorflow-gpu ou tensorflow pesquisando o módulo na caixa de pesquisa usando gui, isso também tomará cuidado de instalar arquivos cuda corretos para você. Usar o navegador anaconda é a solução mais simples.
Se você não estiver usando o anaconda, tome cuidado com o seguinte
tensorflow-gpu 1.3 requer python 3.5.2, cuda development kit 8.0 e cudaDNN 6.0, portanto, ao instalar certifique-se de executar o comando
pip install tensorflow-gpu==1.3
tensorflow-gpu 1.2.1 ou menos requer python 3.5.2, cuda development kit 8.0 e cudaDNN 5.1, portanto, ao instalar certifique-se de executar o comando
pip install tensorflow-gpu==1.2.1
Abaixo estão as etapas que você precisa seguir para ambos os processos acima Configurando suas variáveis de caminho Você deve ter as seguintes variáveis de sistema
CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"
CUDA_PATH = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"
CUDA_PATH_V8.0 = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"
Seu PATHTEXT deve incluir ".DLL" junto com outras extensões
".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.DLL"
Adicione também o seguinte ao seu caminho
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\CUPTI\libx64;
C:\Windows\SysWOW64;
C:\Windows\System32
Se estiver recebendo erros, você pode baixar o código abaixo por mrry, este código verificará sua configuração e informará se algo está errado https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Referências : http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html
A referência acima é muito útil. Por favor, comente para melhorias a esta resposta. Espero que isso ajude, obrigado.
Para as pessoas que encontraram esta postagem em 2019, esse erro também pode ocorrer porque o Python versão 3.7 não tem suporte para TensorFlow (consulte https://www.tensorflow.org/install/pip ). Portanto, verifique a versão do Python:
python --version
Caso seja maior que 3,6, deve ser rebaixado para 3,6. Para Anaconda:
conda install python=3.6
Em seguida, instale o TensorFlow.
pip install tensorflow
A propósito, eu não tinha a versão da GPU, então não houve problemas relacionados ao CUDA no meu caso.
Encontrou o mesmo problema ( em 09/09/2019 ) ao investigar [SO]: Erro ao treinar usando a API do estimador em tensorflow .
Configuração:
Erro :
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow as tf"
Traceback (most recent call last):
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed: The specified module could not be found.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed: The specified module could not be found.
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
Olhando para o módulo "defeituoso" (graças ao Dependency Walker ), não é ele mesmo que está faltando, mas algumas de suas dependências (os arquivos cu * _ 100 .dll ).
Verifique [SO]: Python Ctypes - carregando dll lança OSError: [WinError 193]% 1 não é um aplicativo Win32 válido (resposta de @CristiFati) (a seção Conclusões no final) para obter mais detalhes sobre esse tipo de erro.
Eu tinha uma versão mais antiga do CUDA Toolkit ( 8 ) e, como consequência, os arquivos cu * _ 80 .dll .
Atualizar para TensorFlow-GPU 1. 14 .0 ( "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -m pip install --upgrade tensorflow-gpu
), tornou o erro um pouco mais claro (e também mais curto):
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow as tf"
Traceback (most recent call last):
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\platform\self_check.py", line 75, in preload_check
ctypes.WinDLL(build_info.cudart_dll_name)
File "c:\install\x64\python\python\03.07.03\Lib\ctypes\__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\__init__.py", line 28, in <module>
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 30, in <module>
self_check.preload_check()
File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\platform\self_check.py", line 82, in preload_check
% (build_info.cudart_dll_name, build_info.cuda_version_number))
ImportError: Could not find 'cudart64_100.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 10.0 from this URL: https://developer.nvidia.com/cuda-90-download-archive
Passos :
Após as etapas acima, e também definindo os caminhos corretos, funcionou:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> set PATH=%PATH%;%CUDA_PATH%\bin;f:\Install\x64\NVidia\GPU Computing Toolkit\cuDNN\7.6\bin
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow;print(\"Success!!!\")"
Success!!!