W systemie Windows uruchomienie polecenia „import tensorflow” nie generuje błędu „_pywrap_tensorflow” modułu o nazwie

87

W systemie Windows TensorFlow zgłasza jeden lub oba następujące błędy po wykonaniu import tensorflowinstrukcji:

  • No module named "_pywrap_tensorflow"
  • DLL load failed.
Barry Rosenberg
źródło

Odpowiedzi:

78

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:

  • Upewnij się, że masz bibliotekę MSVCP140.DLL, sprawdzając system / ścieżkę - jeśli nie, pobierz ją tutaj
  • Uruchom instalator systemu Windows dla pythona 3.5.3-amd64 stąd - NIE próbuj nowszych wersji, ponieważ prawdopodobnie nie będą działać
  • Pobierz cuDNN v5.1 dla CUDA 8.0 stąd - umieść go w folderze użytkowników lub w innej znanej lokalizacji (będziesz potrzebować tego w swojej ścieżce)
  • Pobierz CUDA 8.0 x86_64 stąd
  • Ustaw zmienne PATH zgodnie z oczekiwaniami, aby wskazywały na biblioteki cuDNN i python (ścieżkę pythona należy dodać podczas instalacji Pythona)
  • Upewnij się, że zmienna PATHEXT zawiera „.DLL”
  • Jeśli używasz tensorflow 1.3, chcesz użyć cudnn64_6.dll github.com/tensorflow/tensorflow/issues/7705

Jeśli używasz systemu Windows 32, pamiętaj, aby pobrać 32-bitowe wersje plików wymienionych powyżej.

DropHit
źródło
8
Może to być oczywiste dla większości, ale biblioteka DLL CUDA to „cudnn64_5.dll”, a folder, w którym się znajduje, musi znajdować się w ścieżce, a nie w folderze nadrzędnym. Wrzuciłem go do '% USERPROFILE% \ AppData \ Local \ cuda \ bin;'
Awesomeness
6
Po dodaniu do PATH pamiętaj, aby zamknąć wiersz polecenia i otworzyć go ponownie. Warto również wpisać „cudnn64_5.dll” w wierszu poleceń, aby upewnić się, że ustawienia ścieżki są prawidłowe.
Sean Colombo
9
Właśnie spędziłem 4 godziny debugowania to, jeśli używasz tensorflow 1.3 to chcesz użyć cudnn64_6.dll github.com/tensorflow/tensorflow/issues/7705
Chris Barrett
2
Komentarz Chrisa Barreta rozwiązał problem - jeśli instalujesz po sierpniu 2017, prawdopodobnie będziesz potrzebować cuDNN v6,0, a nie 5 lub 7.
user1761806
2
W moim przypadku działał również Python 3.5.4. I nie mogłem zainstalować Cuda 8.0, dopóki nie usunąłem vs17 i nie zainstalowałem Visual Studio 15 (win10). To naprawdę śmieszne, że musiałem kolejno wyszukiwać i instalować starsze wersje.
margincall
21

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ść).

Witalij
źródło
1
To był mój przypadek. TensorFlow wymaga „cuDNN v5.1”, ale jeśli zainstalować cuDNN v6.0, a następnie nazwę pliku z cudnn dll będzie cudnn64_6.dllnie cudnn64_5.dll.
Naetmul
1
Jeśli używasz tensorflow 1.3, chcesz użyć cudnn64_6.dll github.com/tensorflow/tensorflow/issues/7705
Chris Barrett
Używam tensorflow 1.3 i musiałem zmienić cudnn64_7.dll (obecnie najnowsza wersja) na cudnn64_6.dll, jak mówi @ChrisBarrett, aby to działało.
Javier Cabero
1
W przypadku tensorflow 1.3 i cudNN 7 podobnie zmiana nazwy cudnn64_7.dllna cudnn64_6.dllpomaga.
Smarty77
12

Każdy błąd wskazuje, że system nie został zainstalowany MSVCP140.DLL, czego wymaga TensorFlow.

Aby naprawić ten błąd:

  1. Określ, czy MSVCP140.DLLznajduje się w %PATH%zmiennej.
  2. Jeśli jej MSVCP140.DLLnie ma %PATH%, zainstaluj pakiet redystrybucyjny Visual C ++ 2015 (wersja x64), który zawiera tę bibliotekę DLL.
Barry Rosenberg
źródło
1
To może, ale nie musi, rozwiązać jego problem (w zależności od procesora czy GPU) i chociaż biblioteka DLL systemu Windows jest potrzebna, może to być również inny problem - patrz odpowiedź poniżej. Nie miałem żadnych problemów z biblioteką DLL systemu Windows, ale zamiast tego miałem problem z cuDNN v6.0
DropHit
7
Możesz sprawdzić, czy plik MSVCP140.dll znajduje się na Twojej ścieżce, wpisując w wierszu polecenia: gdzie MSVCP140.DLL
nickandross
Link prowadzi do wersji 2010. Czy dążymy do wersji 2015 czy 2010?
DAG
10

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 amd64przy użyciu:

import tensorflow as tf

Dlatego obniżyłem wersję tensorflow z 1.7do 1.5za 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.DLLw folderach systemowych i .DLL w zmiennej PATHEXT w zmiennej środowiskowej.

Rakibul Haq
źródło
mój system: Windows 8.1, Python 3.6.5 64-bitowy, brak GPU.
Rakibul Haq
Może wymagać aktualizacji, ponieważ od wersji 2.0.0 tensorflow-gpu jest zintegrowany ze zwykłą instalacją - patrz tutaj: github.com/fo40225/tensorflow-windows-wheel Może chcesz rozważyć moją odpowiedź tutaj, gdzie kompatybilność między różnymi wyjaśniono wersje Pythona i tensorflow: stackoverflow.com/questions/45749992/…
Cadoiz
10

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.DLLjuż, jeśli

  1. masz plik C:\Windows\System32\MSVCP140.DLLAND
  2. jeśli masz system 64-bitowy, to dodatkowo masz C:\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.

JWG
źródło
7

TensorFlowwymagań 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.

Fahtima
źródło
Dla mojej konfiguracji, binarny, który pracował był: storage.googleapis.com/tensorflow/windows/cpu/... - Sprawdź pypi.python.org/pypi/tensorflow dostępne budowanych plików binarnych. Sprawdziłem kilka z nich, dopóki nie powiedzie się „import tensorflow as tf”.
David,
7

cuDNN powoduje mój problem. Zmienna PATH nie działa dla mnie. Muszę skopiować pliki z moich folderów cuDNN do odpowiedniej struktury folderów CUDA 8.0.

Chris Han
źródło
6

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
Jasen
źródło
4

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ć.

Remus A.
źródło
4

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

Madhur
źródło
3

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:

  1. Użyj analizatora zależności DLL, aby przeanalizować <Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pydi 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.

  2. Poszukaj informacji o brakującej bibliotece DLL i zainstaluj odpowiedni pakiet, aby rozwiązać problem.

GZ0
źródło
1
Podoba mi się to podejście, ponieważ wyraźnie pokazuje, których bibliotek DLL brakuje. Okazało się, że tensorflow 1.11 szuka bibliotek dll CUDA 9 i najwyraźniej nie szuka bibliotek CUDA 10.
padmalcom
1
Dziękuję bardzo za sugestię! Na moim komputerze problem polegał na tym, że tensorflow szukał bibliotek DLL, które są dostarczane z CUDA tookit v9, ale zainstalowałem zestaw narzędzi CUDA v10
Floris Devreese
Jest to niezwykle przydatne. Zauważ, że musisz wybrać All files (*.*)obok nazwy pliku zamiast tylko exe files (*.exe, *.dll).
Cadoiz
2

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.

Victor Silva
źródło
2

Jeśli próbujesz zainstalować procesor graficzny tensorflow w systemie Windows, możesz znaleźć ten prosty i interesujący samouczek.

Uwaga: jeśli używasz na przykład PyCharm, musisz zmienić interpretera na utworzone środowisko Conda.

Wesam Na
źródło
1

Dll nie został znaleziony. Zainstaluj pakiet redystrybucyjny Visual C ++ 2015, aby naprawić.

Nacho González-Valdizán
źródło
Nie jestem pewien, czy to dokładnie obejmuje - w zależności od scenariusza - patrz powyższa odpowiedź związana z cuDNN v6.0 - może również chcieć dołączyć link do wspomnianej biblioteki (co zrobię tutaj microsoft.com/en-us/download/ details.aspx? id = 48145 vs ta
krótka notka
1

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.

Cloud Cho
źródło
1

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

edgarbc
źródło
1

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.

user2736738
źródło
1

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.

M2skills
źródło
Opcja anaconda brzmi świetnie, ale patrząc na anaconda.org/anaconda/tensorflow-gpu, wersja tensorflow-gpu dla Windows wydaje się być 1.1, czy jest jakiś sposób, aby uzyskać 1.3 przez anacondę?
ftiaronsem
@ftiaronsem Nie ma możliwości zainstalowania 1.3 za pomocą anaconda-navigator, jeśli chcesz 1.3, a następnie skorzystaj z linku referencyjnego i zanotuj użycie cudaDNN 6.0
M2skills
1

tensorflow 1.3 jeszcze nie obsługuje CUDA 9.0 . Degraduję do CUDA 8.0 , to działa.

yichudu
źródło
1

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.

Catalin Stoean
źródło
1
Zrobiłem, że nadal mam ten sam problem
RollRoll
To działało dla mnie na dwóch różnych komputerach używanych przez moich uczniów. Po wypróbowaniu powyższych rozwiązań nadal mieliśmy problem. W Twoim przypadku może to być sytuacja opisana powyżej.
Catalin Stoean
0

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 ).

Img0

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 :

  • Odinstaluj wszystkie wersję CUDA Toolkit (opcjonalnie)
  • zainstalować [nVidia.Developer]: CUDA Toolkit 10.0 Archive
    • Upewnij się, aby zainstalować v10.0 (to ten TensorFlow-GPU wersja została zbudowana przed ). Zainstalowałem v10. 1 (która była najnowszą, a także zalecaną wersją w momencie udzielenia odpowiedzi), a nazwy plików .dll nie pasują ( cu * _10 1 .dll ). Ponieważ nie chciałem instalować wersji 10.0 , utworzyłem kilka dowiązań symbolicznych (z "poprawnymi" nazwami) do istniejących plików i zadziałało. Ale pamiętaj, że to nie jest obsługiwane !!! Mogą wystąpić zabawne zachowania (w tym awarie) . To jest ( słabe ) obejście ( zysk )
    • Dodatkowo wymagana jest zgodna (co oznacza, że ​​jest przeznaczona dla określonej wersji CUDA Toolkit ) wersja cuDNN ( [nVidia.Developer]: cuDNN Archive ). Aby uzyskać dostęp do adresu URL pobierania , wymagane jest członkostwo w nVidii

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!!!
CristiFati
źródło