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

时间:2017-02-02 19:48:05

标签: tensorflow

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

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

22 个答案:

答案 0 :(得分:74)

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

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

  • 通过检查系统/路径确保您拥有lib MSVCP140.DLL - 如果没有获取它here
  • here运行python 3.5.3-amd64的Windows安装程序 - 不要尝试更新的版本,因为它们可能无法正常工作
  • here获取CUDA 8.0的cuDNN v5.1 - 将其放在您的用户文件夹下或其他已知位置(您的路径中需要此内容)
  • here
  • 获取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位版本。

答案 1 :(得分:20)

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

答案 2 :(得分:13)

任何一个错误都表示您的系统尚未安装MSVCP140.DLL, TensorFlow需要哪些。

要解决此错误:

  1. 确定MSVCP140.DLL变量中是否%PATH%
  2. 如果MSVCP140.DLL中没有%PATH%,请安装。{  Visual C++ 2015 redistributable(x64版本),其中包含此DLL。

答案 3 :(得分:8)

仅适用于CPU的张量流:

我使用命令安装了tensorflow:

pip3 install --upgrade tensorflow

已安装tensorflow 1.7
但无法使用python 3.6.5 amd64导入张量流:

import tensorflow as tf

因此,我使用以下命令将tensorflow版本从1.7降级为1.5

pip3 install tensorflow==1.5

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

似乎是tensorflow 1.7

中需要的CPU does not support AVX instruction

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

答案 4 :(得分:8)

我在AMD CPU上有64位Win7 Pro,没有gpu。我按照"使用原生pip安装"在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 redistributable

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

答案 5 :(得分:7)

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

答案 6 :(得分:6)

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版本。

答案 7 :(得分:5)

对于那些在旧硬件上运行的人:

由于使用tensorflow-gpu 1.6的旧CPU,可能会出现同样的错误。

如果你的cpu是在2011年之前制作的,那么你的max tensorflow-gpu版本是1.5。

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

启用AVX的CPU:Wiki AVX CPUs

我在conda环境中为tensorflow做了什么:

pip install --ignore-installed --upgrade tensorflow-gpu==1.5

答案 8 :(得分:4)

经过多次试验和错误,确保 VC ++ 2015 Redistributable cuDNN DLL和所有其他依赖项都可以从PATH访问,它看起来像 Tensorflow GPU < / em>仅适用于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

致谢:this neat guide

答案 9 :(得分:3)

对于每个Tensorflow的版本,它需要不同版本的CuDnn。在www.tensorflow.org上,他们没有在安装指南中提到过这一点!

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

请检查您的tensorfow版本和cuDNN版本是否匹配。

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

答案 10 :(得分:2)

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

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

答案 11 :(得分:2)

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

答案 12 :(得分:2)

我在Windows系统上的this post中发布了一种用于解决“ DLL加载失败”问题的一般方法。

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

  2. 查找丢失的DLL的信息,然后安装适当的软件包以解决问题。

答案 13 :(得分:1)

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

答案 14 :(得分: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/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

答案 15 :(得分:1)

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

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

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

答案 16 :(得分: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

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

答案 17 :(得分:1)

tensorflow 1.3还不支持 cuda 9.0 。 我降级为 cuda 8.0 ,然后就可以了。

答案 18 :(得分:1)

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

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

答案 19 :(得分:1)

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

答案 20 :(得分:0)

对于在2019年找到此帖子的人来说,也可能发生此错误,因为Python版本3.7不支持TensorFlow(请参见https://www.tensorflow.org/install/pip)。因此,请检查Python版本:

python --version

如果它大于3.6,则应将其降级为3.6。对于Anaconda:

conda install python=3.6

然后,安装TensorFlow。

pip install tensorflow

顺便说一句,我没有GPU版本,因此我的情况下没有CUDA相关问题。

答案 21 :(得分:0)

在调查[SO]: Error while training using the estimator API in tensorflow时遇到了相同的问题( 2019/09/09 中的)。

设置:

错误

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

Img0

检查[SO]: Python Ctypes - loading dll throws OSError: [WinError 193] %1 is not a valid Win32 application (@CristiFati's answer)(末尾的结论部分),以获取有关此类错误的更多详细信息。
我有一个较旧的 CUDA工具包版本( 8 ),因此, cu * _ 80 .dll 个文件。

升级到 TensorFlow-GPU1。 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 Toolkit 10.0 Archive
    • 确保安装 v10.0 TensorFlow-GPU 版本是针对构建的)。我安装了 v10。 1 (这是最新版本,也是回答时的推荐版本),而 .dll 名称没有t匹配( cu * _10 1 .dll )。由于我不想安装 v10.0 ,因此我在现有文件中创建了一些 symlink (带有“正确的”名称),并且可以正常工作。但是请记住,这不受支持!!!!您可能会遇到有趣的行为(包括崩溃)。这是(lam)解决方法( gainarie
    • 此外,还需要一个兼容(意味着它适用于特定的 CUDA Toolkit 版本) cuDNN 版本([nVidia.Developer]: cuDNN Archive) 。要访问下载 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!!!