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


87

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

  • No module named "_pywrap_tensorflow"
  • DLL load failed.

Answers:


78

问题对我来说是cuDNN库-出于任何原因cudnn-8.0-windows10-x64-v6.0无法正常工作-我使用了cudnn-8.0-windows10-x64-v5.1-很好!

我的安装程序使用Win10 64和Nvidia GTX780M:

  • 通过检查系统/路径来确保您具有库MSVCP140.DLL-如果不在此处获取它
  • 此处运行适用于python 3.5.3-amd64的Windows安装程序-不要尝试较新的版本,因为它们可能无法正常工作
  • 此处获取CUD 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位版本。


8
对于大多数人来说,这可能是显而易见的,但是CUDA DLL是'cudnn64_5.dll',并且它所在的文件夹需要位于路径中。而不是父文件夹中。我将其放在“%USERPROFILE%\ AppData \ Local \ cuda \ bin;”中
真棒

6
添加到PATH之后,请记住关闭命令提示符,然后再次打开它。另外,值得在命令提示符下键入“ cudnn64_5.dll”以确保正确设置了路径。
肖恩·科伦坡

9
我只是花了4个小时来调试它,如果您使用的是tensorflow 1.3,那么您想使用cudnn64_6.dll github.com/tensorflow/tensorflow/issues/7705
Chris Barrett

2
克里斯·巴雷特(Chris Barret)的评论解决了它-如果您要在2017年8月之后安装,则可能需要cuDNN v6,0而不是5或
7。– user1761806

2
就我而言,python 3.5.4也有效。在删除vs17并安装Visual Studio 15(win10)之前,我无法安装cuda 8.0。我不得不一个一个地查找并安装旧版本,这真是荒谬。
追加保证金

21

在我的情况下,/ bin文件夹中的“ cudnn64_6.dll”文件必须重命名为“ cudnn64_5.dll”才能消除错误。我很容易地花了两个小时来解决这个问题,并且遵循了这封信的官方安装指南。通过pip(官方支持)和conda(支持社区)进行安装是正确的。


1
这是我的情况。TensorFlow需要“ cuDNN v5.1”,但是如果您安装cuDNN v6.0,那么cudnn dll文件的文件名将cudnn64_6.dll不是cudnn64_5.dll
Naetmul

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

我正在使用tensorflow 1.3,必须按照@ChrisBarrett的说法将其从cudnn64_7.dll(目前为最新版本)更改为cudnn64_6.dll。
哈维尔·卡贝罗

1
在tensorflow 1.3和cudNN 7的情况下,类似地重命名cudnn64_7.dll为help cudnn64_6.dll
Smarty77 '10 -10-10

12

任何一个错误都表明您的系统尚未安装MSVCP140.DLLTensorFlow所需。

要解决此错误:

  1. 确定是否MSVCP140.DLL%PATH%变量中。
  2. 如果MSVCP140.DLL您的目录中没有,请%PATH%安装包含此DLL的 Visual C ++ 2015可再发行组件(x64版本)。

1
这可能会或可能不会解决他的问题(取决于CPU与GPU),尽管需要Windows dll,但它也可能是另一个问题-请参阅下面的答案。我的Windows dll没有问题,但是cuDNN v6.0
却有

7
您可以通过在命令提示符下键入以下命令来检查MSVCP140.dll是否在路径中:其中MSVCP140.DLL
nickandross

该链接将您带到2010版本。我们的目标是2015年还是2010年版本?
DAG

10

仅针对具有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在系统文件夹中,而.DLL在环境变量的PATHEXT变量中。


我的系统:Windows 8.1,Python 3.6.5 64位,无GPU。
拉基布尔·哈克

可能需要更新,因为自版本2.0.0起,tensorflow-gpu已集成到常规安装中-请参见此处:github.com/fo40225/tensorflow-windows-wheel 也许您想在这里考虑我的回答,其中不同之间的兼容性Python和tensorflow版本的解释:stackoverflow.com/questions/45749992/...
Cadoiz

10

我在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已经有

  1. 您有一个文件C:\Windows\System32\MSVCP140.DLL,并且
  2. 如果您使用的是64位系统,则还需要安装C:\Windows\SysWOW64\MSVCP140.DLL

我手动安装了它,这是不必要的(可重新分发的内容不是整个Visual C ++开发的混乱,而且也不大)。使用此线程前面发布的链接进行安装:Visual C ++ 2015 redistributable

另外,我建议您覆盖Python的默认安装目录,并将其放在不位于的任何位置C:\Program Files,因为Windows会尝试在其中写保护文件,这会在以后引起问题。


7

TensorFlowrequire MSVCP140.DLL,可能未安装在您的系统上。要解决此问题,请打开终端,输入或粘贴此链接:

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl 

请注意,这是要安装仅CPU版本的TensorFlow。


对于我的配置,可以使用的二进制文件为:storage.googleapis.com/tensorflow/windows/cpu/…-检查pypi.python.org/pypi/tensorflow以获取可用的内置二进制文件。我检查了其中的几个,直到“ tf导入tensorflow”成功为止。
大卫

7

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


6

对于那些在较旧的硬件上运行的用户:

由于使用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

4

对我来说,问题在于cuDNN库与图形卡的要求不匹配。我下载了6.0版本,但是对于我的GTX980ti,但是在nvidia网站上推荐的计算能力是5.1(http://developer.nvidia.com/cuda-gpus),所以我下载了5.1并替换了6.0版本,已经做到,它开始工作了。


4

经过大量的试验和错误,并确保可以从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

积分:这本整洁的指南



3

我在Windows系统上的这篇文章中发布了解决“ DLL加载失败”问题的一般方法。以供参考:

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

  2. 查找缺少的DLL的信息,然后安装适当的程序包以解决问题。


1
我喜欢这种方法,因为它可以明确显示缺少的dll。发现tensorflow 1.11正在查找CUDA 9 dll,并且似乎没有在搜索CUDA 10库。
padmalcom '18

1
非常感谢您的建议!在我的机器上,问题是张量流正在寻找CUDA takeit v9附带的DLL,但是我安装了CUDA工具包v10
Floris Devreese

这是非常有用的。请注意,您必须选择All files (*.*)文件名旁边而不是exe files (*.exe, *.dll)
Cadoiz

2

可能很想在Windows上保持Powershell / cmd的打开状态。我花了相当长的时间,直到决定关闭并重新打开Powershell,才意识到我做对了所有事情。


2

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

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



1

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

作为参考,我使用PIP和操作系统(Windows 7和IDE:Visual Studio 2015)从源代码安装了TensorFlow。



1

我的两分钱:

尝试在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


1

我将尝试给出对我有用的解决方案。似乎不同的问题集可能导致这种情况。

32位软件可在64位OS中运行。我在64位操作系统中安装了anaconda-3(32位)。运行正常。我决定在我的机器上安装tensorflow,但一开始不会安装。我正在使用conda环境安装tensorflow并收到此错误。

解决方案是,如果运行的是64位操作系统,请安装64位anaconda,如果安装的是32位OS,则安装32位anaconda。然后按照tensorflow网站中提到的Windows标准步骤(anaconda安装)进行操作。这样就可以毫无问题地安装tensorflow。


1

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

上面的参考非常有用。请评论此答案的改进。希望对您有所帮助,谢谢。


anaconda选项听起来不错,但查看anaconda.org/anaconda/tensorflow-gpu,用于Windows的tensorflow-gpu版本似乎是1.1,可以通过anaconda获得1.3吗?
ftiaronsem

@ftiaronsem如果要使用1.3,则无法使用anaconda-navigator安装1.3,然后单击参考链接并做注释以使用cudaDNN 6.0
M2skills 17-10-28'5

1

tensorflow 1.3目前尚不支持cuda 9.0。我降级到cuda 8.0,然后它可以工作。


1

对于在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相关问题。


1
我确实
遇到

这在我的学生使用的两台不同的计算机上为我工作。尝试上述解决方案后,我们仍然遇到问题。就您而言,可能是上述情况。
Catalin Stoean

0

在调查[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文件)。

图0

检查[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

步骤

  • 卸载任何CUDA Toolkit版本(可选)
  • 安装[nVidia.Developer]:CUDA工具包10.0存档
    • 确保安装v10.0TensorFlow-GPU版本是针对构建的)。我安装了v10。1(这是最新版本,也是在回答问题时的推荐版本),. dll名称不匹配(cu * _10 1 .dll)。因为我不想安装v10.0,所以我创建了一些符号链接(带有“正确的”名称)到现有文件,并且可以正常工作。但是请记住,这不受支持!!!您可能会遇到有趣的行为(包括崩溃)。这是(lam)解决方法(gainarie
    • 此外,还需要兼容(意味着它是针对特定CUDA工具包版本)的cuDNN版本([nVidia.Developer]:cuDNN存档)。为了访问下载URL,需要nVidia成员身份

完成上述步骤并设置正确的路径后,它可以工作:

[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!!!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.