在Windows上,TensorFlow执行一条import tensorflow
语句后报告以下一个或两个以下错误:
No module named "_pywrap_tensorflow"
DLL load failed.
Answers:
问题对我来说是cuDNN库-出于任何原因cudnn-8.0-windows10-x64-v6.0无法正常工作-我使用了cudnn-8.0-windows10-x64-v5.1-很好!
我的安装程序使用Win10 64和Nvidia GTX780M:
如果运行Windows 32,请确保获取上述文件的32位版本。
在我的情况下,/ bin文件夹中的“ cudnn64_6.dll”文件必须重命名为“ cudnn64_5.dll”才能消除错误。我很容易地花了两个小时来解决这个问题,并且遵循了这封信的官方安装指南。通过pip(官方支持)和conda(支持社区)进行安装是正确的。
cudnn64_6.dll
不是cudnn64_5.dll
。
cudnn64_7.dll
为help cudnn64_6.dll
。
任何一个错误都表明您的系统尚未安装MSVCP140.DLL
TensorFlow所需。
要解决此错误:
MSVCP140.DLL
在%PATH%
变量中。MSVCP140.DLL
您的目录中没有,请%PATH%
安装包含此DLL的
Visual C ++ 2015可再发行组件(x64版本)。仅针对具有CPU的Tensorflow:
我已经使用命令安装了tensorflow:
pip3 install --upgrade tensorflow
这个已安装tensorflow 1.7
但无法python 3.6.5 amd64
使用以下方式导入tensorflow :
import tensorflow as tf
所以,我从降级的tensorflow版本1.7
来1.5
使用下面的命令:
pip3 install tensorflow==1.5
这将卸载以前的版本并进行安装1.5
。现在可以了。
看来,我的CPU不支持AVX指令集tensorflow 1.7
我MSVCP140.DLL
在系统文件夹中,而.DLL在环境变量的PATHEXT变量中。
我在AMD cpu上有64位的Win7 Pro,没有gpu。我按照https://www.tensorflow.org/install/install_windows上“使用本机pip安装”下的说明进行操作。安装步骤正常,但尝试导入tensorflow产生了臭名昭著的消息:
ImportError: No module named '_pywrap_tensorflow_internal'
这似乎是许多不相关的事情可能出错的情况之一,具体取决于配置,所有这些错误都级联到同一个错误。
就我而言,安装MSVCP140.DLL是答案。
你MSVCP140.DLL
已经有
C:\Windows\System32\MSVCP140.DLL
,并且C:\Windows\SysWOW64\MSVCP140.DLL
。我手动安装了它,这是不必要的(可重新分发的内容不是整个Visual C ++开发的混乱,而且也不大)。使用此线程前面发布的链接进行安装:Visual C ++ 2015 redistributable。
另外,我建议您覆盖Python的默认安装目录,并将其放在不位于的任何位置C:\Program Files
,因为Windows会尝试在其中写保护文件,这会在以后引起问题。
TensorFlow
require MSVCP140.DLL
,可能未安装在您的系统上。要解决此问题,请打开终端,输入或粘贴此链接:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl
请注意,这是要安装仅CPU版本的TensorFlow。
对于那些在较旧的硬件上运行的用户:
由于使用tensorflow-gpu 1.6的CPU较旧,您可能会遇到相同的错误。
如果您的CPU是在2011年之前制造的,则您的最大tensorflow-gpu版本为1.5。
Tensorflow 1.6在您的CPU上需要AVX指令。在这里验证:Tensorflow Github文档
支持AVX的CPU: Wiki AVX CPU
我在conda环境中为Tensorflow做的事情:
pip install --ignore-installed --upgrade tensorflow-gpu==1.5
对我来说,问题在于cuDNN库与图形卡的要求不匹配。我下载了6.0版本,但是对于我的GTX980ti,但是在nvidia网站上推荐的计算能力是5.1(http://developer.nvidia.com/cuda-gpus),所以我下载了5.1并替换了6.0版本,已经做到,它开始工作了。
经过大量的试验和错误,并确保可以从PATH访问VC ++ 2015 Redistributable,cuDNN DLL和所有其他依赖项,看来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(GHz)1.176
pciBusID 0000:06:00.0
总内存:2.00GiB可用
内存:1.66GiB
积分:这本整洁的指南
对于每个Tensorflow的版本,它需要不同版本的CuDnn。在www.tensorflow.org上,他们没有在安装指南中提及此内容!
我的案例使用使用cuDNN 6的tensorflow版本1.3.https ://github.com/tensorflow/tensorflow/releases。
请检查您的tensorfow版本和cuDNN版本是否匹配。
我在Windows系统上的这篇文章中发布了解决“ DLL加载失败”问题的一般方法。以供参考:
使用DLL依赖性分析器Dependencies分析
<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd
并确定确切缺少的DLL(由?
DLL旁边的a表示)。.pyd文件的路径基于我安装的TensorFlow 1.9 GPU版本。我不确定其他TensorFlow版本中的名称和路径是否相同。查找缺少的DLL的信息,然后安装适当的程序包以解决问题。
All files (*.*)
文件名旁边而不是exe files (*.exe, *.dll)
。
可能很想在Windows上保持Powershell / cmd的打开状态。我花了相当长的时间,直到决定关闭并重新打开Powershell,才意识到我做对了所有事情。
找不到Dll。安装Visual C ++ 2015可重新分发以修复。
在TensorFlow版本1.3.0中,您需要使用Cudnn 6.0而不是Cudnn 5.0,因为Cudnn 5.0会出现此错误。不要忘记将路径变量添加到Cudnn 6.0中。使用cudnn64_6.dll,您的Tensorflow将可以正常工作。阅读下面的链接。 https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-130
我的两分钱:
尝试在Windows 7上正确安装CUDA 8.0时,我遇到了很多问题。我安装了以前的版本,并且想升级,因此我将其卸载并尝试安装CUDA 8.0(用于tensorflow 1.3)。安装每次都失败,我尝试降级到CUDA 7.5并能够安装它,但tensorflow遇到很多问题(类似于此处所述的PATH问题)。长话短说:对我有用的是:
1)卸载每个NVIDIA组件(显示图形驱动程序除外)
2)下载CUDA工具包8.0(和补丁)https://developer.nvidia.com/cuda-downloads
3)检查CheckSum MD5(我使用MS https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=11533,但可以这样做)以确保它们正常(发生了几次安装程序未正确下载,因为显然是我的WiFi路由器)。
4)以root身份运行CUDA工具包安装程序
5)下载cudnn 8.0 v6并将其位置添加到PATH变量https://developer.nvidia.com/rdp/cudnn-download
希望可以帮助并节省一些头痛...
注意:此脚本对调试问题大有帮助!(谢谢你mrry) https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c
我的答案仅适用于Windows 10用户,因为我已经在Windows 10上尝试了以下内容。我建议扩展上述一些答案:如果使用的是anaconda,则可以避免所有操作,只需使用以下命令安装anaconda-navigator
conda install -c anaconda anaconda-navigator
然后,您可以使用以下命令从命令提示符启动导航器
anaconda-navigator
在运行此命令时,您会得到一个简单的gui,您可以在其中创建虚拟环境,使用python = 3.5.2创建环境,并通过使用gui在搜索框中搜索模块来安装模块tensorflow-gpu或tensorflow,它也会注意为您安装正确的cuda文件。使用anaconda导航器是最简单的解决方案。
如果您不使用anaconda,请注意以下事项
tensorflow-gpu 1.3需要python 3.5.2,cuda开发套件8.0和cudaDNN 6.0,因此在安装时请确保您运行以下命令
pip install tensorflow-gpu==1.3
tensorflow-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
上面的参考非常有用。请评论此答案的改进。希望对您有所帮助,谢谢。
对于在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相关问题。
在调查[SO]时遇到相同的问题(于2019/09/09):在tensorflow中使用estimator API训练时出错。
建立:
错误:
[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.
查看“有问题的”模块(感谢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\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
步骤:
完成上述步骤并设置正确的路径后,它可以工作:
[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!!!