二维码

在Windows上,运行“import tensorflow”会生成名为“_pywrap_tensorflow”的无模块错误

1898 人阅读 | 时间:2018年12月02日 09:55

在Windows上,TensorFlow在执行import tensorflow语句后报告以下一个或两个错误

  • No module named "_pywrap_tensorflow"

  • DLL load failed.

71

问题是cuDNN库对我来说 - 无论出于什么原因cudnn-8.0-windows10-x64-v6.0不工作 - 我用cudnn-8.0-windows10-x64-v5.1 - 一切都好!

我的设置使用Win10 64和Nvidia GTX780M:

  • 通过检查您的系统/路径确保您拥有lib MSVCP140.DLL - 如果没有在此处获取它

  • 这里运行python 3.5.3-amd64的Windows安装程序- 不要尝试更新版本,因为它们可能无法正常工作

  • 此处获取CUDA 8.0的cuDNN v5.1 - 将其放在用户文件夹下或其他已知位置(您将在路径中使用此文件)

  • 这里获取CUDA 8.0 x86_64

  • 按预期设置PATH变量指向cuDNN libs和python(python路径应该在python安装期间添加)

  • 确保PATHEXT变量中包含“.DLL”

  • 如果您使用的是tensorflow 1.3,那么您想使用cudnn64_6.dll github.com/tensorflow/tensorflow/issues/7705

如果您运行Windows 32,请确保获得上述文件的32位版本。

在我的情况下,/ bin文件夹中的“cudnn64_6.dll”文件必须重命名为“cudnn64_5.dll”才能使错误消失。我轻松花了两个小时来解决这个问题,然后我按照正式的安装指南进行了说明。通过pip(官方支持)和conda(社区支持)进行安装时都是如此。

这两个错误都表示您的系统尚未安装MSVCP140.DLL,TensorFlow需要该系统

要修复此错误:

  1. 确定是否MSVCP140.DLL在您的%PATH%变量中。

  2. 如果MSVCP140.DLL不在您%PATH%身份,请安装包含此DLL 的 Visual C ++ 2015可再发行组件(x64版本)。第二种选择对我有用 -  Ryan Chu 于2017年2月22日21:37

  • 1
    这可能会或可能不会解决他的问题(取决于CPU与GPU),虽然需要windows dll,但它也可能是另一个问题 - 请参阅下面的答案。我没有与windows dll有任何问题,但却出现了与cuDNN v6.0的问题 -  DropHit  2017年4月23日在1:04 
  • 6
    您可以通过在命令提示符下键入以下内容来检查MSVCP140.dll是否在您的路径中:其中MSVCP140.DLL - nickandross 17年  5月6日在1:29
  • 第二个选项也适合我 - Nik391 17年  7月24日0:48
  • 该链接将您带到2010版本。我们的目标是2015年或2010年的版本吗? - DAG 于17年  10月5日17:02

我在AMD CPU上有64位Win7 Pro,没有gpu。我按照https://www.tensorflow.org/install/install_windows上的 “使用原生点安装”中的说明进行操作安装步骤没问题,但导入tensorflow的尝试产生了臭名昭着:

ImportError:没有名为'_pywrap_tensorflow_internal'的模块

这似乎是许多无关的事情可能出错的情况之一,这取决于配置,所有这些都会导致同样的错误。

就我而言,安装MSVCP140.DLL就是答案。

如果(a)你有一个文件C:\ Windows \ System43 \ MSVCP140.DLL,你有MSVCP140.DLL,如果你有一个64位系统,则(b)你还有C:\ Windows \ SysWOW64 \ MSVCP140。 DLL。

我手动安装它,这是不必要的(可再发行的不是整个Visual C ++开发混乱,并不大)。使用此线程中先前发布的链接来安装它:Visual C ++ 2015可再发行组件

此外,我建议您覆盖Python的默认安装目录并将其放在C:\ Program Files下的任何位置,因为Windows会尝试在那里写保护文件,这会导致以后出现问题。

仅适用于CPU的tensorflow:


我使用命令安装了tensorflow:

pip3 install --upgrade tensorflow

这已安装tensorflow 1.7 
但无法python 3.6.5 amd64使用以下方法导入tensorflow 

import tensorflow as tf

所以,我将tensorflow版本降级1.71.5使用以下命令:

pip3 install tensorflow==1.5

这将卸载以前的版本并安装1.5现在它有效。

似乎,我的CPU不支持所需的AVX指令tensorflow 1.7

MSVCP140.DLL在系统文件夹和环境变量中的PATHEXT变量中有.DLL

cuDNN导致我的问题。PATH变量对我不起作用。我必须将我的cuDNN文件夹中的文件复制到尊重的CUDA 8.0文件夹结构中。


TensorFlow需要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年之前制作的,那么你的max tensorflow-gpu版本是1.5。

Tensorflow 1.6需要在您的cpu上使用AVX指令。在此验证:Tensorflow Github docs

启用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 RedistributablecuDNN 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上,他们没有在安装指南中提到过这一点!

我的情况使用tensorflow版本1.3,它使用cuDNN 6. https://github.com/tensorflow/tensorflow/releases

如果它们匹配,请检查您的tensorfow版本和cuDNN版本。

请为cuDNN设置路径环境,如果仍然无效,请查看@Chris Han的评论。

人们可能想要在Windows上保持Powershell / cmd打开。我花了一些合理的时间,直到我决定关闭并重新开启我的Powershell,才意识到我已经做好了一切。

如果您尝试在Windows中安装tensorflow GPU,您可以找到这个简单有趣的教程。

注意:例如,如果您使用PyCharm,则必须将解释器更改为创建的conda环境。

我发布了一个解决Windows系统上这篇文章中 “DLL加载失败”问题的一般方法

  1. 使用DLL依赖性分析器依赖关系来分析<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd和确定确切缺失的DLL(由?DLL旁边的a指示)。.pyd文件的路径基于我安装的TensorFlow 1.9 GPU版本。我不确定其他TensorFlow版本中的名称和路径是否相同。

  2. 查找缺少的DLL的信息并安装相应的包以解决此问题。

  • 我喜欢这种方法,因为它明确地显示了哪些dll缺失。发现tensorflow 1.11正在寻找CUDA 9 dlls,似乎不会搜索CUDA 10库。 -  padmalcom 10月13日8:55
  • 非常感谢您的建议!在我的机器上问题是tensorflow正在寻找随CUDA takeit v9一起提供的DLL,但是我安装了CUDA toolkit v10 -  Floris 11月9日15:00 

找不到Dll。安装Visual C ++ 2015可再发行以修复。

不确定这完全涵盖了它 - 取决于场景 - 参见上面与cuDNN v6.0相关的答案 - 也可能想要包含你提到的lib的链接(我将在这里做到这一点microsoft.com/en-us/download/ ?details.aspx ID = 48145 VS这种快速的Blurb :) -  DropHit 4月23日在'17 1:09 

问题是我的cuDNN图书馆。在Windows PATH中添加cuDNN DLL(不是LIB文件)的目录(可能是bin文件夹)之后,我能够运行测试代码

作为参考,我使用PIP和我的操作系统从源代码安装了TensorFlow:Windows 7和IDE:Visual Studio 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/en-ca/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

我会尝试提供适合我的解决方案。似乎不同的问题可能会导致这种情况。

32位软件在64位操作系统中工作。我在64位操作系统中安装了anaconda-3(32位)。它工作得非常好。我决定在我的机器上安装tensorflow,它最初不会安装。我正在使用conda环境来安装tensorflow并得到了这个错误。

解决方法是,如果您运行64位操作系统,安装64位anaconda,如果是32位操作系统,那么32位anaconda然后按照tensorflow网站上提到的windows(anaconda安装)中提到的标准程序进行操作。这使得可以毫无问题地安装张量流。

我的答案仅适用于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\x64C:\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

以上参考非常有用。请评论此答案的改进。希望这有帮助,谢谢。

tensorflow 1.3还不支持cuda 9.0我降级到cuda 8.0,然后它工作。


©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 1 人评论
  • 访客  发表于 2个月前
    1楼

    我对楼主的敬仰犹如滔滔江水绵延不绝!http://3bi.net/post/2559.html/

搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×