W systemie Windows TensorFlow zgłasza jeden lub oba następujące błędy po wykonaniu import tensorflow
instrukcji:
No module named "_pywrap_tensorflow"
DLL load failed.
W systemie Windows TensorFlow zgłasza jeden lub oba następujące błędy po wykonaniu import tensorflow
instrukcji:
No module named "_pywrap_tensorflow"
DLL load failed.
Odpowiedzi:
Problemem była dla mnie biblioteka cuDNN - z jakiegoś powodu cudnn-8.0-windows10-x64-v6.0 NIE działała - użyłem cudnn-8.0-windows10-x64-v5.1 - WSZYSTKO DOBRE!
Moja konfiguracja działająca z Win10 64 i Nvidia GTX780M:
Jeśli używasz systemu Windows 32, pamiętaj, aby pobrać 32-bitowe wersje plików wymienionych powyżej.
W moim przypadku nazwa pliku „cudnn64_6.dll” w folderze / bin musiała zostać zmieniona na „cudnn64_5.dll”, aby błąd zniknął. Z łatwością spędziłem dwie godziny, aby to rozgryźć, i postępowałem zgodnie z oficjalnym przewodnikiem instalacji co do joty. Dotyczy to instalacji przez pip (oficjalnie obsługiwane) i conda (obsługiwane przez społeczność).
cudnn64_6.dll
nie cudnn64_5.dll
.
cudnn64_7.dll
na cudnn64_6.dll
pomaga.
Każdy błąd wskazuje, że system nie został zainstalowany MSVCP140.DLL
, czego wymaga TensorFlow.
Aby naprawić ten błąd:
MSVCP140.DLL
znajduje się w %PATH%
zmiennej.MSVCP140.DLL
nie ma %PATH%
, zainstaluj
pakiet redystrybucyjny Visual C ++ 2015 (wersja x64), który zawiera tę bibliotekę DLL.Tylko w przypadku tensorflow z procesorem:
Zainstalowałem tensorflow za pomocą polecenia:
pip3 install --upgrade tensorflow
Zainstalowano, tensorflow 1.7
ale nie można zaimportować tensorflow z python 3.6.5 amd64
przy użyciu:
import tensorflow as tf
Dlatego obniżyłem wersję tensorflow z 1.7
do 1.5
za pomocą następującego polecenia:
pip3 install tensorflow==1.5
To odinstalowało poprzednią wersję i zainstalowało 1.5
. Teraz działa.
Wygląda na to, że mój procesor nie obsługuje zestawu instrukcji AVX, który jest wymagany wtensorflow 1.7
Miałem MSVCP140.DLL
w folderach systemowych i .DLL w zmiennej PATHEXT w zmiennej środowiskowej.
Mam Win7 Pro w wersji 64-bitowej na procesorze AMD, bez procesora graficznego. Postępowałem zgodnie z instrukcjami zawartymi w sekcji „Instalowanie za pomocą natywnego pip” na https://www.tensorflow.org/install/install_windows . Etap instalacji poszedł dobrze, ale próba zaimportowania tensorflow zakończyła się niesławnym:
ImportError: No module named '_pywrap_tensorflow_internal'
Wydaje się, że jest to jedna z tych sytuacji, w których wiele niezwiązanych ze sobą rzeczy może pójść nie tak, w zależności od konfiguracji, a wszystko to prowadzi do tego samego błędu.
W moim przypadku rozwiązaniem była instalacja MSVCP140.DLL.
Masz MSVCP140.DLL
już, jeśli
C:\Windows\System32\MSVCP140.DLL
ANDC:\Windows\SysWOW64\MSVCP140.DLL
.Zainstalowałem go ręcznie, co było niepotrzebne (pakiet redystrybucyjny nie jest całym bałaganem programistycznym Visual C ++ i nie jest duży). Użyj linku opublikowanego wcześniej w tym wątku, aby go zainstalować: Pakiet redystrybucyjny Visual C ++ 2015 .
Zalecam również zastąpienie domyślnego katalogu instalacyjnego dla Pythona i umieszczenie go gdziekolwiek poza nim C:\Program Files
, ponieważ Windows próbuje tam chronić pliki przed zapisem, co powoduje później problemy.
TensorFlow
wymagań MSVCP140.DLL
, które mogą nie być zainstalowane w Twoim systemie. Aby rozwiązać ten problem, otwórz terminal i wpisz lub wklej ten link:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl
Należy pamiętać, że jest to instalacja wersji TensorFlow wyłącznie dla procesora.
Dla osób korzystających ze starszego sprzętu:
Ten sam błąd może wystąpić z powodu posiadania starszego procesora korzystającego z tensorflow-gpu 1.6.
Jeśli Twój procesor został wyprodukowany przed 2011 rokiem, maksymalna wersja tensorflow-gpu to 1.5.
Tensorflow 1.6 wymaga instrukcji AVX na twoim procesorze. Zweryfikowano tutaj: Dokumentacja Tensorflow Github
Procesory obsługujące AVX: procesory Wiki AVX
Co zrobiłem w moim środowisku Conda dla tensorflow:
pip install --ignore-installed --upgrade tensorflow-gpu==1.5
Problemem była dla mnie biblioteka cuDNN, która nie odpowiadała wymaganiom karty graficznej. Pobrałem wersję 6.0, ale dla mojego GTX980ti, ale zalecana zdolność obliczeniowa na stronie nvidia to 5.1 ( http://developer.nvidia.com/cuda-gpus ), więc pobrałem 5.1 i zastąpiłem wersję 6.0 i jak tylko. zrobiłem, że zaczęło działać.
Po wielu próbach i błędach i upewnieniu się , że pakiet redystrybucyjny VC ++ 2015 , cuDNN DLL i wszystkie inne zależności są dostępne z PATH, wygląda na to, że procesor graficzny Tensorflow działa tylko z Pythonem 3.5.2
(w chwili pisania tego tekstu)
Więc jeśli używasz Anaconda
conda create -n tensorflow-gpu python=3.5.2
activate tensorflow-gpu
pip install tensorflow-gpu
Następnie otwórz interpreter języka Python i zweryfikuj
>>> import tensorflow as tf
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Znalezione urządzenie 0 z właściwościami:
nazwa: GeForce 940M
główny: 5 podrzędny: 0
memoryClockRate (GHz)
1,176 pciBusID 0000: 06: 00,0
Całkowita pamięć: 2,00GiB
Wolna pamięć: 1,66GiB
Kredyty: ten zgrabny przewodnik
Każda wersja Tensorflow wymaga innej wersji CuDnn. Na www.tensorflow.org nie wspomnieli o tym w instrukcji instalacji!
W moim przypadku używam tensorflow w wersji 1.3, która używa cuDNN 6. https://github.com/tensorflow/tensorflow/releases .
Sprawdź swoją wersję tensorfow i wersję cuDNN, jeśli są zgodne.
I ustaw środowisko ścieżki dla cuDNN, jeśli nadal nie działa, sprawdź plik odpowiedź od @ Chris Han .
W tym poście opublikowałem ogólne podejście do rozwiązywania problemu z błędem ładowania DLL w systemach Windows. Na przykład:
Użyj analizatora zależności DLL, aby przeanalizować
<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd
i określić dokładną brakującą bibliotekę DLL (wskazywaną przez?
obok biblioteki DLL). Ścieżka do pliku .pyd jest oparta na zainstalowanej przeze mnie wersji GPU TensorFlow 1.9. Nie jestem pewien, czy nazwa i ścieżka są takie same w innych wersjach TensorFlow.Poszukaj informacji o brakującej bibliotece DLL i zainstaluj odpowiedni pakiet, aby rozwiązać problem.
All files (*.*)
obok nazwy pliku zamiast tylko exe files (*.exe, *.dll)
.
Można pokusić się o pozostawienie otwartej powłoki Powershell / cmd w systemie Windows. Spędziłem rozsądny czas, zanim zdecydowałem się zamknąć i ponownie otworzyć moją Powershell tylko po to, aby zdać sobie sprawę, że zrobiłem wszystko dobrze.
Dll nie został znaleziony. Zainstaluj pakiet redystrybucyjny Visual C ++ 2015, aby naprawić.
Dla mnie problemem była biblioteka cuDNN. Udało mi się uruchomić kod testowy po dodaniu katalogu (prawdopodobnie folderu bin) biblioteki cuDNN DLL (nie pliku LIB) w ścieżce systemu Windows.
Dla porównania zainstalowałem TensorFlow ze źródła przy użyciu PIP i mojego systemu operacyjnego: Windows 7 i IDE: Visual Studio 2015.
W przypadku wersji 1.3.0 TensorFlow należy użyć Cudnn 6.0 zamiast Cudnn 5.0, ponieważ Cudnn 5.0 podaje ten błąd. Nie zapomnij dodać zmiennej ścieżki do Cudnn 6.0. Z cudnn64_6.dll Twój Tensorflow będzie działał poprawnie. Przeczytaj poniższy link. https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-130
Moje dwa centy:
Miałem mnóstwo problemów, próbując poprawnie zainstalować moją CUDA 8.0 na Windows 7. Miałem zainstalowaną poprzednią wersję i chciałem ją zaktualizować, więc odinstalowałem ją i próbowałem zainstalować CUDA 8.0 (dla tensorflow 1.3). Instalacja nie powiodła się za każdym razem, próbowałem przejść na CUDA 7.5 i mogłem ją zainstalować, ale miałem mnóstwo problemów z tensorflow (podobnie jak w przypadku opisanego tutaj problemu PATH). Krótko mówiąc: to, co zadziałało dla mnie to:
1) Odinstaluj KAŻDY składnik NVIDIA (z wyjątkiem sterownika karty graficznej)
2) Pobierz zestaw narzędzi CUDA 8.0 (i poprawkę) https://developer.nvidia.com/cuda-downloads
3) Sprawdź CheckSum MD5 (użyłem MS https://www.microsoft.com/en-ca/download/confirmation.aspx?id=11533, ale każdy by zrobił), aby upewnić się, że są w porządku (zdarzyło się to kilka razy, że instalator nie został poprawnie pobrany, ponieważ najwyraźniej mój router WiFi).
4) Uruchom instalator zestawu narzędzi CUDA jako root
5) Pobierz Cudnn 8.0 v6 i dodaj jego lokalizację do zmiennej PATH https://developer.nvidia.com/rdp/cudnn-download
Mam nadzieję, że to pomaga i ratuje niektóre bóle głowy ...
UWAGA: Ten skrypt bardzo mi pomógł w debugowaniu problemu! (Dziękuję mrry) https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Postaram się podać rozwiązanie, które działało dla mnie. Wydaje się, że inny zestaw problemów może prowadzić do takiej sytuacji.
Oprogramowanie 32-bitowe działa w 64-bitowym systemie operacyjnym. Zainstalowałem Anaconda-3 (32-bitową) w moim 64-bitowym systemie operacyjnym. Działało doskonale. Zdecydowałem się zainstalować tensorflow w mojej maszynie i na początku nie było to możliwe. Użyłem środowiska Conda do zainstalowania tensorflow i otrzymałem ten błąd.
Rozwiązaniem jest, jeśli używasz 64-bitowego systemu operacyjnego, zainstaluj 64-bitową anakondę, a jeśli 32-bitowy system operacyjny, to 32-bitową anakondę . Następnie postępuj zgodnie ze standardową procedurą opisaną na stronie tensorflow dla Windows (instalacja anacondy). Umożliwiło to bezproblemową instalację tensorflow.
moja odpowiedź dotyczy tylko użytkowników systemu Windows 10, ponieważ wypróbowałem następujące rozwiązania w systemie Windows 10. Sugeruję, aby rozszerzyć niektóre z powyższych odpowiedzi: Jeśli używasz anacondy, możesz uniknąć wszystkiego i po prostu zainstalować anaconda-navigator za pomocą polecenia
conda install -c anaconda anaconda-navigator
Następnie możesz uruchomić nawigator z wiersza poleceń za pomocą polecenia
anaconda-navigator
Po uruchomieniu tego polecenia otrzymujesz proste GUI, w którym możesz utworzyć środowisko wirtualne, utworzyć środowisko z python = 3.5.2 i zainstalować moduł tensorflow-gpu lub tensorflow przeszukując moduł w polu wyszukiwania za pomocą gui, zajmie się również instalacji poprawnych plików CUDA. Korzystanie z nawigatora Anaconda to najprostsze rozwiązanie.
Jeśli nie używasz anakondy, zwróć uwagę na następujące kwestie
tensorflow-gpu 1.3 wymaga Pythona 3.5.2, zestawu deweloperskiego cuda 8.0 i cudaDNN 6.0, dlatego podczas instalacji upewnij się, że uruchomiłeś polecenie
pip install tensorflow-gpu==1.3
tensorflow-gpu 1.2.1 lub mniej wymaga Pythona 3.5.2, CUDA Development Kit 8.0 i cudaDNN 5.1, dlatego podczas instalacji upewnij się, że uruchomiłeś polecenie
pip install tensorflow-gpu==1.2.1
Poniżej znajdują się kroki, które należy wykonać dla obu powyższych procesów Konfigurowanie zmiennych ścieżki Musisz mieć następujące zmienne systemowe
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"
PATHTEXT musi zawierać „.DLL” wraz z innymi rozszerzeniami
".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.DLL"
Dodaj również następujące elementy do swojej ścieżki
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
Jeśli otrzymujesz błędy, możesz pobrać poniższy kod przez mrry, ten kod sprawdzi konfigurację i powie Ci, czy coś jest nie tak https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Źródła: http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html
Powyższe odniesienie jest bardzo przydatne. Prosimy o komentarz w celu ulepszenia tej odpowiedzi. Mam nadzieję, że to pomoże, dzięki.
Dla osób, które znalazły ten post w 2019 roku, ten błąd może również wystąpić, ponieważ Python w wersji 3.7 nie obsługuje TensorFlow (patrz https://www.tensorflow.org/install/pip ). Sprawdź więc wersję Pythona:
python --version
Jeśli jest większy niż 3,6, należy go obniżyć do 3,6. Anaconda:
conda install python=3.6
Następnie zainstaluj TensorFlow.
pip install tensorflow
Przy okazji, nie miałem wersji GPU, więc w moim przypadku nie było problemów związanych z CUDA.
Napotkałem ten sam problem ( w 2019/09/09 ) podczas badania [SO]: Błąd podczas uczenia przy użyciu API estymatora w tensorflow .
Ustawiać:
Błąd :
[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.
Patrząc na „wadliwy” moduł (dzięki Dependency Walker ), okazuje się, że nie brakuje go samego, ale niektóre jego zależności ( cu * _ 100 .dll pliki ).
Sprawdź [SO]: Python Ctypes - ładowanie dll zgłasza błąd OSError: [WinError 193]% 1 nie jest poprawną aplikacją Win32 (odpowiedź @ CristiFati) ( sekcja Wnioski na końcu), aby uzyskać więcej informacji na temat tego rodzaju błędów.
Miałem starszą wersję CUDA Toolkit ( 8 ), aw konsekwencji plik pliki cu * _ 80 .dll .
Aktualizacja do TensorFlow-GPU 1. 14 .0 ( "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -m pip install --upgrade tensorflow-gpu
) sprawiła, że błąd był nieco jaśniejszy (a także krótszy):
[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
Kroki :
Po wykonaniu powyższych czynności, a także ustawieniu poprawnych ścieżek zadziałało:
[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!!!