В Windows при запуске import tenorflow генерируется ошибка "Нет модуля с именем _pywrap_tensorflow"
В Windows TensorFlow сообщает об одной или обеих следующих ошибках после выполнения import tensorflow
заявление:
No module named "_pywrap_tensorflow"
DLL load failed.
21 ответ
Проблема была в том, что библиотека cuDNN для меня - по какой-то причине cudnn-8.0-windows10-x64-v6.0 НЕ работала - я использовал cudnn-8.0-windows10-x64-v5.1 - ВСЕ ХОРОШО!
Моя установка, работающая с Win10 64 и Nvidia GTX780M:
- Убедитесь, что у вас есть lib MSVCP140.DLL, проверив вашу систему / путь - если не получите ее здесь
- Запустите установщик Windows для Python 3.5.3-amd64 отсюда - НЕ пробуйте новые версии, так как они, вероятно, не будут работать
- Загрузите cuDNN v5.1 для CUDA 8.0 отсюда - поместите его в свою папку пользователя или в другое известное место (оно понадобится вам на вашем пути)
- Получите CUDA 8.0 x86_64 отсюда
- Установите переменные PATH, как ожидается, чтобы они указывали на библиотеки cuDNN и python (путь python должен быть добавлен во время установки python)
- Убедитесь, что ".DLL" включен в вашу переменную PATHEXT
- Если вы используете тензор потока 1.3, то вы хотите использовать cudnn64_6.dll https://github.com/tensorflow/tensorflow/issues/7705
Если вы используете Windows 32, убедитесь, что вы получили 32-битные версии файлов, упомянутых выше.
В моем случае файл "cudnn64_6.dll" в папке /bin пришлось переименовать в "cudnn64_5.dll", чтобы ошибка исчезла. Я легко потратил два часа, чтобы понять это, и я следовал официальному руководству по установке письма. Это верно для установки через pip (официально поддерживается) и conda (поддерживается сообществом).
Любая ошибка указывает на то, что ваша система не установлена MSVCP140.DLL
, который требует TensorFlow.
Чтобы исправить эту ошибку:
- Определить
MSVCP140.DLL
в вашем%PATH%
переменная. - Если
MSVCP140.DLL
не в вашем%PATH%
, установите распространяемый Visual C++ 2015 (версия x64), который содержит эту DLL.
У меня Win7 Pro 64-bit на процессоре AMD, нет графического процессора. Я следовал инструкциям в разделе "Установка с помощью собственного pip" по адресу https://www.tensorflow.org/install/install_windows. Шаг установки прошел нормально, но попытка импортировать tenorflow вызвала дурную славу:
Ошибка импорта: нет модуля с именем _pywrap_tensorflow_internal.
Похоже, что это одна из тех ситуаций, когда многие несвязанные вещи могут пойти не так, в зависимости от конфигурации, которые все каскадно приводят к одной и той же ошибке.
В моем случае, установка MSVCP140.DLL была ответом.
У вас уже есть MSVCP140.DLL, если (а) у вас есть файл C:\Windows\System43\MSVCP140.DLL, и (b) если у вас 64-битная система, то у вас дополнительно есть C:\Windows\SysWOW64\MSVCP140.DLL.
Я установил его вручную, что было ненужно (распространяемый продукт - не весь беспорядок разработки Visual C++ и не большой). Используйте ссылку, размещенную ранее в этой теме, чтобы установить ее: распространяемый Visual C++ 2015.
Кроме того, я рекомендую переопределить каталог установки по умолчанию для Python и поместить его где угодно, но не в C:\Program Files, потому что Windows пытается защитить файлы от записи, что впоследствии вызывает проблемы.
Только для тензорного потока с процессором:
Я установил тензор потока с помощью команды:
pip3 install --upgrade tensorflow
Это установлено tensorflow 1.7
Но не удалось импортировать тензорный поток изнутри python 3.6.5 amd64
с помощью:
import tensorflow as tf
Итак, я понизил версию tenorflow с 1.7
в 1.5
используя следующую команду:
pip3 install tensorflow==1.5
Это удалило предыдущую версию и установило 1.5
, Теперь это работает.
Кажется, что мой процессор не поддерживает набор инструкций AVX, который необходим в tensorflow 1.7
я имел MSVCP140.DLL
в системных папках и.DLL в переменной PATHEXT в переменной среды.
TensorFlow
требует MSVCP140.DLL
, который не может быть установлен в вашей системе. Чтобы решить эту проблему, откройте терминал en или вставьте эту ссылку:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl
Обратите внимание, что для установки версии TensorFlow только для центрального процессора.
cuDNN вызывает мою проблему. Переменная PATH не работает для меня. Я должен скопировать файлы из моих папок cuDNN в уважительную структуру папок CUDA 8.0.
Для тех, кто работает на старом оборудовании:
Вы можете получить эту же ошибку из-за того, что на старом процессоре использовался tenorflow-gpu 1.6.
Если ваш процессор был сделан до 2011 года, то ваша максимальная версия tenorflow-gpu - 1.5.
Tensorflow 1.6 требует инструкций AVX на вашем процессоре. Проверено здесь: Tensorflow Github Docs
Процессоры с поддержкой AVX: Wiki AVX CPU
Что я сделал в моей среде conda для tenorflow:
pip install --ignore-installed --upgrade tensorflow-gpu==1.5
В этом посте в системах Windows я опубликовал общий подход к устранению проблемы "Ошибка загрузки DLL".
Используйте анализатор зависимостей DLL Зависимости для анализа
<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd
и определить точную отсутствующую DLL (обозначенную?
рядом с DLL). Путь к файлу.pyd зависит от установленной мной версии графического процессора TensorFlow 1.9. Я не уверен, совпадают ли имя и путь в других версиях TensorFlow.Найдите информацию об отсутствующей DLL и установите соответствующий пакет для решения проблемы.
Для меня проблемой была библиотека cuDNN, которая не соответствовала требованиям графической карты. Я скачал версию 6.0, но для своего GTX980ti, но рекомендуемая возможность вычислений на веб-сайте nvidia была 5.1 ( http://developer.nvidia.com/cuda-gpus), поэтому я скачал 5.1 и заменил версию 6.0, и как только я ' мы сделали, что он начал работать.
Для каждой версии Tensorflow требуется другая версия CuDnn. На www.tensorflow.org об этом не упоминали в руководстве по установке!
В моем случае используется тензор потока версии 1.3, использующий cuDNN 6. https://github.com/tensorflow/tensorflow/releases.
Пожалуйста, проверьте вашу версию tensorfow и cuDNN, если они совпадают.
И, пожалуйста, установите окружение пути для cuDNN, если это все еще не работает, пожалуйста, проверьте комментарий от @Chris Han.
После долгих проб и ошибок, а также убедившись, что распространяемый VC++ 2015, cuDNN DLL и все другие зависимости доступны из PATH, похоже, что Tensorflow GPU работает только с Python 3.5.2
(на момент написания статьи)
Так что если вы используете Anaconda
conda create -n tensorflow-gpu python=3.5.2
activate tensorflow-gpu
pip install tensorflow-gpu
Затем откройте интерпретатор Python и проверьте
>>> import tensorflow as tf
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Найдено устройство 0 со свойствами:
название: GeForce 940M
мажор: 5 минор: 0
memoryClockRate (ГГц) 1,176
pciBusID 0000: 06: 00.0
Общая память: 2,00 ГБ
Свободная память: 1,66 ГБ
Кредиты: это аккуратный гид
Если вы пытаетесь установить GPU tenorflow в Windows, вы можете найти этот простой интересный учебник.
Примечание. Если вы используете, например, PyCharm, вам нужно изменить интерпретатор на созданную среду conda.
Может возникнуть соблазн оставить Powershell/cmd открытым в Windows. Я потратил разумное время, пока не решил закрыть и снова открыть свой Powershell, только чтобы понять, что все сделал правильно.
Для людей, нашедших этот пост в 2019 году, эта ошибка также может возникать из-за того, что версия Python 3.7 не поддерживает TensorFlow (см. https://www.tensorflow.org/install/pip). Итак, проверьте версию Python:
python --version
Если оно больше 3,6, его следует понизить до 3,6. Для Анаконды:
conda install python=3.6
Затем установите TensorFlow.
pip install tensorflow
Кстати, у меня не было версии GPU, поэтому в моем случае не было проблем, связанных с CUDA.
Я постараюсь дать решение, которое сработало для меня. Кажется, что другой набор проблем может привести к этой ситуации.
32-битное программное обеспечение работает в 64-битной ОС. Я установил анаконду-3 (32-битную) в моей 64-битной ОС. Работало отлично. Я решил установить tenorsflow на моей машине, и он не будет установлен сначала. Я использовал среду conda для установки tenorflow и получил эту ошибку.
Решение заключается в том, что если вы работаете с 64-битной ОС, установите 64-битную анаконду, а если 32-битная ОС, то 32-битная анаконда. Затем следуйте стандартной процедуре, указанной на веб-сайте tenorflow для Windows (установка anaconda). Это позволило установить тензор потока без каких-либо проблем.
Длл не найден. Установите Visual C++ 2015 распространяемый для исправления.
tenorflow 1.3 пока не поддерживает cuda 9.0. Я деградирую до cuda 8.0, тогда все работает.
Возникла та же проблема (в 2019/09/09) при исследовании [SO]: Ошибка при обучении с использованием API оценки в тензорном потоке.
Настроить:
- Win 10 x64
- Python 3.7.3 (x64)
- TensorFlow- ГПУ 1.13.1 ( [TensorFlow]: Установка TensorFlow с ПУМ)
Ошибка:
[cfati@CFATI-5510-0:e:\Work\Dev\Stackru\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.
Глядя на "неисправный" модуль (благодаря Dependency Walker), оказывается, что отсутствует не сам модуль , а некоторые его зависимости (файлы cu* _ 100.dll).
Проверьте [SO]: Python Ctypes - загрузка dll выдает ошибку OSError: [WinError 193] %1 не является допустимым приложением Win32 (ответ @CristiFati) (раздел " Выводы " в конце) для получения дополнительных сведений об этом виде ошибок.
У меня была более старая версия CUDA Toolkit (8) и, как следствие, файлы cu* _ 80.dll.
Обновление до TensorFlow-GPU 1.14.0 ("e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -m pip install --upgrade tensorflow-gpu
), сделав ошибку немного яснее (а также короче):
[cfati@CFATI-5510-0:e:\Work\Dev\Stackru\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
Шаги:
- Удалите любую версию CUDA Toolkit (необязательно)
- Установите [nVidia.Developer]: Архив CUDA Toolkit 10.0
- Обязательно установите v10.0 (для которой была создана эта версия TensorFlow-GPU). Я установил v10.1 (которая была последней, а также рекомендуемой версией на момент ответа), а имена .dll не совпадали (cu* _10 1.dll). Поскольку я не хотел устанавливать v10.0, я создал несколько символических ссылок (с "правильными" именами) на существующие файлы, и это сработало. Но имейте в виду, что это не поддерживается!!! Вы можете столкнуться со странным поведением (включая сбои). Это (неудачный) обходной путь (gainarie)
- Кроме того, требуется совместимая (то есть для конкретной версии CUDA Toolkit) версия cuDNN ( [nVidia.Developer]: cuDNN Archive). Для того, чтобы получить доступ к загрузки URL, NVidia требуется членство
После вышеуказанных шагов, а также установки правильных путей все заработало:
[cfati@CFATI-5510-0:e:\Work\Dev\Stackru\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\Stackru\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow;print(\"Success!!!\")" Success!!!
Мой ответ только для пользователей Windows 10, так как я попробовал следующее в Windows 10. Расширяя некоторые из приведенных выше ответов, я предлагаю следующее: Если вы используете anaconda, вы можете избежать всего и просто установить anaconda-navigator с помощью команды
conda install -c anaconda anaconda-navigator
Затем вы можете запустить навигатор из командной строки, используя команду
anaconda-navigator
Запустив эту команду, вы получите простой графический интерфейс, в котором вы можете создать виртуальную среду, создать среду с python=3.5.2 и установить модуль tennsflow-gpu или тензор потока, выполнив поиск модуля в окне поиска с помощью графического интерфейса, это также позаботится установить правильные файлы CUDA для вас. Использование Anaconda Navigator является самым простым решением.
Если вы не используете Anaconda, позаботьтесь о следующем
tenensflow-GPU 1.3 требует Python 3.5.2, Cuda Development Kit 8.0 и CUDADNN 6.0, поэтому при установке убедитесь, что вы запустите команду
pip install tensorflow-gpu==1.3
Тензор-gpu 1.2.1 или менее требует Python 3.5.2, комплект для разработки cuda 8.0 и cudaDNN 5.1, поэтому при установке обязательно запустите команду
pip install tensorflow-gpu==1.2.1
Ниже приведены шаги, которые необходимо выполнить для обоих указанных процессов. Настройка переменных пути. У вас должны быть следующие системные переменные.
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 должен включать ".DLL" вместе с другими расширениями
".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.DLL"
Также добавьте следующий путь к вам
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
Если вы получаете ошибки, вы можете скачать приведенный ниже код от mrry, этот код проверит ваши настройки и сообщит вам, если что-то не так https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
Ссылки: http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html
Приведенная выше ссылка очень полезна. Пожалуйста, прокомментируйте для улучшения этого ответа. Надеюсь, это поможет, спасибо.
Проблема была в библиотеке cuDNN для меня. Я смог запустить тестовый код после добавления каталога (возможно, папки bin) библиотеки cuDNN DLL (не файла LIB) в Windows PATH.
Для справки я установил TensorFlow из исходного кода, используя PIP и мою ОС: Windows 7 и IDE: Visual Studio 2015.
В TensorFlow версии 1.3.0 вам нужно использовать Cudnn 6.0 вместо Cudnn 5.0, поскольку Cudnn 5.0 выдает эту ошибку. Не забудьте добавить переменную path в Cudnn 6.0. С cudnn64_6.dll ваш Tensorflow будет работать нормально. Прочитайте ссылку ниже. https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-130
Мои два цента:
У меня было множество проблем, когда я пытался правильно установить CUDA 8.0 в Windows 7. У меня была установлена предыдущая версия, и я хотел обновить ее, поэтому удалил ее и попытался установить CUDA 8.0 (для tenorflow 1.3). Установка не удалась каждый раз, я пытался перейти на CUDA 7.5 и смог установить его, но у него было множество проблем с тензорным потоком (аналогично описанной здесь проблеме PATH). Короче говоря: у меня получилось так:
1) Удалите КАЖДЫЙ компонент NVIDIA (кроме драйвера графического дисплея)
2) Загрузите набор инструментов CUDA 8.0 (и патч) https://developer.nvidia.com/cuda-downloads
3) Проверьте CheckSum MD5 (я использовал MS https://www.microsoft.com/en-ca/download/confirmation.aspx?id=11533 но любой сделал бы), чтобы убедиться, что они были в порядке (это происходило несколько раз, что установщик не был загружен должным образом, потому что мой WiFi-маршрутизатор, по-видимому).
4) Запустите программу установки инструментария CUDA от имени пользователя root
5) Загрузите cudnn 8.0 v6 и добавьте его местоположение в переменную PATH https://developer.nvidia.com/rdp/cudnn-download
Надеюсь, что это помогает и спасает некоторые головные боли...
ПРИМЕЧАНИЕ: этот скрипт очень помог мне отладить проблему! (Спасибо, мистер) https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c