Su Windows, TensorFlow segnala uno o entrambi i seguenti errori dopo aver eseguito import tensorflow
un'istruzione:
No module named "_pywrap_tensorflow"
DLL load failed.
Su Windows, TensorFlow segnala uno o entrambi i seguenti errori dopo aver eseguito import tensorflow
un'istruzione:
No module named "_pywrap_tensorflow"
DLL load failed.
Risposte:
Il problema era la libreria cuDNN per me - per qualsiasi motivo cudnn-8.0-windows10-x64-v6.0 NON funzionava - ho usato cudnn-8.0-windows10-x64-v5.1 - TUTTO BENE!
La mia configurazione funziona con Win10 64 e Nvidia GTX780M:
Se esegui Windows 32 assicurati di ottenere le versioni a 32 bit dei file sopra menzionati.
Nel mio caso il file "cudnn64_6.dll" nella cartella / bin doveva essere rinominato in "cudnn64_5.dll" affinché l'errore andasse via. Ho passato facilmente due ore a capirlo e ho seguito alla lettera la guida all'installazione ufficiale. Questo è vero per l'installazione tramite pip (supportato ufficialmente) e conda (supportato dalla comunità).
cudnn64_6.dll
non lo sarà cudnn64_5.dll
.
cudnn64_7.dll
in cudnn64_6.dll
aiuta.
Entrambi gli errori indicano che il sistema non è stato installato MSVCP140.DLL
, operazione richiesta da TensorFlow.
Per correggere questo errore:
MSVCP140.DLL
è nella tua %PATH%
variabile.MSVCP140.DLL
non è nel tuo %PATH%
, installa il
ridistribuibile di Visual C ++ 2015 (versione x64), che contiene questa DLL.Ho Win7 Pro a 64 bit su CPU AMD, nessuna GPU. Stavo seguendo le istruzioni in "Installazione con pip nativo" su https://www.tensorflow.org/install/install_windows . Il passaggio di installazione è andato a buon fine ma il tentativo di importare tensorflow ha prodotto il famigerato:
ImportError: No module named '_pywrap_tensorflow_internal'
Questa sembra essere una di quelle situazioni in cui molte cose non correlate possono andare storte, a seconda della configurazione, che ricadono tutte sullo stesso errore.
Nel mio caso, l'installazione di MSVCP140.DLL è stata la risposta.
Hai MSVCP140.DLL
già se
C:\Windows\System32\MSVCP140.DLL
, ANDC:\Windows\SysWOW64\MSVCP140.DLL
.L'ho installato manualmente, il che non era necessario (il ridistribuibile non è l'intero pasticcio di sviluppo di Visual C ++ e non è grande). Utilizzare il collegamento pubblicato in precedenza in questo thread per installarlo: Visual C ++ 2015 ridistribuibile .
Inoltre, ti consiglio di sovrascrivere la directory di installazione predefinita per Python e metterla ovunque non sotto C:\Program Files
, perché Windows cerca di proteggere da scrittura i file lì, il che causa problemi in seguito.
Solo per tensorflow con CPU:
Avevo installato tensorflow usando il comando:
pip3 install --upgrade tensorflow
Questo installato tensorflow 1.7
Ma non è stato possibile importare il tensorflow da withing python 3.6.5 amd64
utilizzando:
import tensorflow as tf
Quindi, ho effettuato il downgrade della versione di tensorflow da 1.7
a 1.5
utilizzando il seguente comando:
pip3 install tensorflow==1.5
Questo ha disinstallato la versione precedente e installata 1.5
. Ora funziona.
Sembra che la mia CPU non supporti le istruzioni AVX necessario intensorflow 1.7
Avevo MSVCP140.DLL
nelle cartelle di sistema e .DLL nella variabile PATHEXT in Variabile d'ambiente.
TensorFlow
richiede MSVCP140.DLL
, che potrebbe non essere installato sul tuo sistema. Per risolverlo apri il terminale e digita o incolla questo link:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl
Tieni presente che questo serve per installare la versione solo CPU di TensorFlow.
Per coloro che utilizzano hardware meno recente:
Potresti ricevere lo stesso errore a causa di una vecchia CPU che utilizza tensorflow-gpu 1.6.
Se la tua CPU è stata realizzata prima del 2011, la tua versione massima di tensorflow-gpu è 1.5.
Tensorflow 1.6 richiede le istruzioni AVX sulla tua CPU. Verificato qui: documenti Tensorflow Github
CPU abilitate per AVX: CPU Wiki AVX
Cosa ho fatto nel mio ambiente conda per tensorflow:
pip install --ignore-installed --upgrade tensorflow-gpu==1.5
Il problema per me era la libreria cuDNN che non corrispondeva ai requisiti della scheda grafica. Ho scaricato la versione 6.0 ma per la mia GTX980ti ma la capacità di calcolo consigliata sul sito web di nvidia era 5.1 ( http://developer.nvidia.com/cuda-gpus ) quindi ho scaricato 5.1 e sostituito la versione 6.0 e non appena ho ' L'ho fatto ha iniziato a funzionare.
Dopo molte prove ed errori e assicurandosi che VC ++ 2015 Redistributable , cuDNN DLL e tutte le altre dipendenze siano accessibili da PATH, sembra che la GPU Tensorflow funzioni solo con Python 3.5.2
(al momento della stesura di questo documento)
Quindi se stai usando Anaconda
conda create -n tensorflow-gpu python=3.5.2
activate tensorflow-gpu
pip install tensorflow-gpu
Quindi apri l'interprete Python e verifica
>>> import tensorflow as tf
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Trovato dispositivo 0 con proprietà:
nome: GeForce 940M
maggiore: 5 minore: 0
memoryClockRate (GHz) 1.176
pciBusID 0000: 06: 00.0
Memoria totale: 2.00GiB
Memoria libera: 1.66GiB
Crediti: questa guida accurata
Per ogni versione di Tensorflow, richiede una versione diversa di CuDnn. Su www.tensorflow.org , non ne hanno parlato nella guida all'installazione!
Il mio caso utilizza la versione 1.3 di tensorflow che utilizza cuDNN 6. https://github.com/tensorflow/tensorflow/releases .
Si prega di controllare la versione di tensorfow e la versione cuDNN se corrispondono insieme.
E per favore imposta l'ambiente del percorso per cuDNN, se ancora non funziona, controlla la risposta di @ Chris Han .
Ho pubblicato un approccio generale per la risoluzione del problema del "caricamento della DLL non riuscito" in questo articolo sui sistemi Windows. Per riferimento:
Utilizzare l'analizzatore delle dipendenze DLL Dipendenze per analizzare
<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd
e determinare l'esatta DLL mancante (indicata da un?
accanto alla DLL). Il percorso del file .pyd è basato sulla versione della GPU TensorFlow 1.9 che ho installato. Non sono sicuro che il nome e il percorso siano gli stessi in altre versioni di TensorFlow.Cerca le informazioni sulla DLL mancante e installa il pacchetto appropriato per risolvere il problema.
All files (*.*)
accanto al nome del file anziché solo exe files (*.exe, *.dll)
.
Si può essere tentati di mantenere aperto Powershell / cmd su Windows. Ho trascorso un tempo ragionevole finché non ho deciso di chiudere e riaprire il mio Powershell solo per rendermi conto di aver fatto tutto bene.
Dll non trovato. Installa Visual C ++ 2015 ridistribuibile per correggere.
Il problema era la libreria cuDNN per me. Sono stato in grado di eseguire il codice di prova dopo aver aggiunto la directory (possibilmente cartella bin) della DLL cuDNN (non il file LIB) nel PATH di Windows.
Per riferimento, ho installato TensorFlow dall'origine utilizzando PIP e il mio sistema operativo: Windows 7 e IDE: Visual Studio 2015.
Con TensorFlow versione 1.3.0, è necessario utilizzare Cudnn 6.0 invece di Cudnn 5.0 poiché Cudnn 5.0 restituisce questo errore. Non dimenticare di aggiungere la variabile di percorso a Cudnn 6.0. Con cudnn64_6.dll il tuo Tensorflow funzionerà bene. Leggi il link qui sotto. https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-130
I miei due centesimi:
Ho avuto un sacco di problemi cercando di installare correttamente il mio CUDA 8.0 su Windows 7. Avevo una versione precedente installata e volevo aggiornarla, quindi l'ho disinstallata e ho provato a installare CUDA 8.0 (per tensorflow 1.3). L'installazione non è riuscita ogni volta, ho provato a eseguire il downgrade a CUDA 7.5 e sono riuscito a installarlo ma ho avuto un sacco di problemi con tensorflow (simile al problema PATH descritto qui). Per farla breve: ciò che ha funzionato per me è stato:
1) Disinstalla OGNI componente NVIDIA (tranne il driver grafico dello schermo)
2) Scarica il toolkit CUDA 8.0 (e la patch) https://developer.nvidia.com/cuda-downloads
3) Controlla CheckSum MD5 (ho utilizzato MS https://www.microsoft.com/en-ca/download/confirmation.aspx?id=11533 ma qualsiasi andrebbe bene) per assicurarti che fosse OK (è successo più volte che il programma di installazione non è stato scaricato correttamente perché apparentemente il mio router WiFi).
4) Esegui il programma di installazione del toolkit CUDA come root
5) scarica cudnn 8.0 v6 e aggiungi la sua posizione alla variabile PATH https://developer.nvidia.com/rdp/cudnn-download
Spero che aiuti e salvi qualche mal di testa ...
NOTA: questo script mi ha aiutato molto a eseguire il debug del problema! (Grazie signor) https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Cercherò di dare la soluzione che ha funzionato per me. Sembra che una serie diversa di problemi possa portare a questa situazione.
Il software a 32 bit funziona in sistemi operativi a 64 bit. Ho installato anaconda-3 (32 bit) nel mio sistema operativo a 64 bit. Funzionava perfettamente bene. Ho deciso di installare tensorflow sulla mia macchina e all'inizio non si installava. Stavo usando l'ambiente conda per installare tensorflow e ho ricevuto questo errore.
La soluzione è se stai utilizzando un sistema operativo a 64 bit, installa anaconda a 64 bit e se il sistema operativo a 32 bit è a 32 bit anaconda . Quindi segui la procedura standard menzionata nel sito Web di tensorflow per Windows (installazione di anaconda). Ciò ha permesso di installare tensorflow senza alcun problema.
la mia risposta è solo per gli utenti di Windows 10 poiché ho provato quanto segue su Windows 10. Estendendo alcune delle risposte sopra, suggerisco questo: Se stai usando anaconda, puoi evitare tutto e installare semplicemente anaconda-navigator usando il comando
conda install -c anaconda anaconda-navigator
Quindi puoi avviare il navigatore dal prompt dei comandi utilizzando il comando
anaconda-navigator
Eseguendo questo comando si ottiene una semplice gui in cui è possibile creare un ambiente virtuale, creare l'ambiente con python = 3.5.2 e installare il modulo tensorflow-gpu o tensorflow cercando il modulo nella casella di ricerca utilizzando gui, si occuperà anche di installare i file cuda corretti per te. Usare anaconda navigator è la soluzione più semplice.
Se non stai usando anaconda, fai attenzione a quanto segue
tensorflow-gpu 1.3 richiede python 3.5.2, cuda development kit 8.0 e cudaDNN 6.0, quindi durante l'installazione assicurati di eseguire il comando
pip install tensorflow-gpu==1.3
tensorflow-gpu 1.2.1 o inferiore richiede python 3.5.2, cuda development kit 8.0 e cudaDNN 5.1 quindi durante l'installazione assicurati di eseguire il comando
pip install tensorflow-gpu==1.2.1
Di seguito sono riportati i passaggi da seguire per entrambi i processi precedenti Impostazione delle variabili di percorso È necessario disporre delle seguenti variabili di 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"
Il tuo PATHTEXT deve includere ".DLL" insieme ad altre estensioni
".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.DLL"
Aggiungi anche quanto segue al tuo percorso
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 ricevi errori, puoi scaricare il codice di esecuzione seguente da mrry, questo codice controllerà la tua configurazione e ti dirà se qualcosa non va https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Riferimenti: http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html
Il riferimento sopra è molto utile. Si prega di commentare per miglioramenti a questa risposta. Spero che questo aiuti, grazie.
Per le persone che hanno trovato questo post nel 2019, questo errore potrebbe verificarsi anche perché la versione 3.7 di Python non supporta TensorFlow (vedere https://www.tensorflow.org/install/pip ). Quindi, controlla la versione di Python:
python --version
Nel caso in cui sia maggiore di 3,6, dovrebbe essere declassato a 3,6. Per Anaconda:
conda install python=3.6
Quindi, installa TensorFlow.
pip install tensorflow
A proposito, non avevo la versione GPU, quindi nel mio caso non c'erano problemi relativi a CUDA.
Si è verificato lo stesso problema ( nel 09/09/2019 ) durante l'indagine [SO]: errore durante l'addestramento utilizzando l'API estimator in tensorflow .
Impostare:
Errore :
[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.
Guardando il modulo "difettoso" (grazie a Dependency Walker ), si scopre che non è in sé che manca, ma alcune delle sue dipendenze (i file cu * _ 100 .dll ).
Controllare [SO]: Python Ctypes - il caricamento della dll genera OSError: [WinError 193]% 1 non è un'applicazione Win32 valida (risposta di @ CristiFati) (la sezione Conclusioni alla fine) per maggiori dettagli su questo tipo di errori.
Avevo una versione precedente di CUDA Toolkit ( 8 ) e, di conseguenza, il cu * _ 80 .dll .
L'aggiornamento a TensorFlow-GPU 1. 14 .0 ( "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -m pip install --upgrade tensorflow-gpu
), ha reso l'errore un po 'più chiaro (e anche più breve):
[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
Passaggi :
Dopo i passaggi precedenti e anche impostando i percorsi corretti, ha funzionato:
[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!!!