TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块

Posted

技术标签:

【中文标题】TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块【英文标题】:TensorFlow ImportError: DLL load failed while importing _pywrap_tensorflow_internal: The specified module could not be found 【发布时间】:2021-03-04 17:32:19 【问题描述】:

系统规格:

Python==3.8.5 tensorflow==2.3.1

我正在尝试导入 tensorflow...但我收到导入错误。请帮我解决问题。我试着关注...

pip uninstall tensorflow

pip install tensorflow

当我执行pip freeze 时,我看到安装的 tensorflow 包具有指定版本。 错误信息:

ImportError                               Traceback (most recent call last)
~\anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py in <module>
     63   try:
---> 64     from tensorflow.python._pywrap_tensorflow_internal import *
     65   # This try catch logic is because there is no bazel equivalent for py_extension.

ImportError: DLL load failed while importing _pywrap_tensorflow_internal: The specified module could not be found.

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-1-d6579f534729> in <module>
----> 1 import tensorflow

~\anaconda3\lib\site-packages\tensorflow\__init__.py in <module>
     39 import sys as _sys
     40 
---> 41 from tensorflow.python.tools import module_util as _module_util
     42 from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader
     43 

~\anaconda3\lib\site-packages\tensorflow\python\__init__.py in <module>
     38 # pylint: disable=wildcard-import,g-bad-import-order,g-import-not-at-top
     39 
---> 40 from tensorflow.python.eager import context
     41 
     42 # pylint: enable=wildcard-import

~\anaconda3\lib\site-packages\tensorflow\python\eager\context.py in <module>
     33 from tensorflow.core.protobuf import config_pb2
     34 from tensorflow.core.protobuf import rewriter_config_pb2
---> 35 from tensorflow.python import pywrap_tfe
     36 from tensorflow.python import tf2
     37 from tensorflow.python.client import pywrap_tf_session

~\anaconda3\lib\site-packages\tensorflow\python\pywrap_tfe.py in <module>
     26 
     27 # pylint: disable=invalid-import-order,g-bad-import-order, wildcard-import, unused-import
---> 28 from tensorflow.python import pywrap_tensorflow
     29 from tensorflow.python._pywrap_tfe import *

~\anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py in <module>
     81 for some common reasons and solutions.  Include the entire stack trace
     82 above this error message when asking for help.""" % traceback.format_exc()
---> 83   raise ImportError(msg)
     84 
     85 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long

ImportError: Traceback (most recent call last):
  File "C:\Users\user\anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 64, in <module>
    from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: DLL load failed while importing _pywrap_tensorflow_internal: 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.```

【问题讨论】:

【参考方案1】:

使用 Anaconda 安装 Tensorflow,

使用 Python 3.8 为 Tensorflow 创建单独的环境

conda create --name tf python=3.8 tensorflow 
conda activate tf

【讨论】:

谢谢 :) 它正在工作。但我无法在 jupyter notebook 中加载 TF 查看 Jupyter notebook 是在哪个环境中打开的。如果它与 tf 环境不同,请在此处全新安装 Tensorflow。谢谢【参考方案2】:

我不小心删除了这个文件。像pip uninstall tensorflow==2.3.0 一样卸载TensorFlow 并再次安装pip install tensorflow==2.3.0 解决了这个问题。不要忘记重启内核

【讨论】:

【参考方案3】:

添加我的解决方法/hack (TF 2.5.0),以防它帮助某人:

在我的例子中,我已经安装了十几个 Visual C++ Redistributables('05、'08、...一直到 2017 年)——但 TF 仍然因臭名昭著的 ImportError: DLL load failed while importing _pywrap_tensorflow_internal: The specified module could not be found 错误而失败。我不想下载和安装另一个可再发行组件,只是为了让 TF 正常工作。 (此外,我已经遇到了几个帖子,足以让人怀疑安装它是否真的可以解决问题。)

根据this SO post,有问题的失败_pywrap_tensorflow_internal.pyd只是另一个DLL;所以我

    已下载(仅 468 KB)并运行 Dependency Walker 以检测上述 PYD 请求了哪些 DLL。 除了通常提到的vcruntime140.dll,PYD 还依赖于vcruntime140_1.dllvcruntime140.dllC:/Windows/System32/ 中可用(使用where vcruntime140.dll 检查),但在vcruntime140_1.dll 中不可用;所以我在我的系统分区 C: 上进行了搜索,并在其他地方发现了几个 vcruntime140_1.dll 的副本,主要在我的主目录的 AppData/Local/(用户安装的应用程序)中。 几乎所有这些应用程序都是“受信任的”应用程序(WhatsApp、MS Teams ......),所以我只是将其中一个中的 vcruntime140_1.dll 复制到了 C:/Windows/System32/ - 并且错误消失了。

因此,即使所有记录的要求都已满足,如果您仍遇到此错误,请进行一些调试以找出错误的原因。它可能会为您节省大量的挫败感和浪费的带宽。

【讨论】:

以上是关于TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块

ImportError: 当使用pyinstaller创建一个.exe时,无法导入名称'pywrap_tensorflow'。

导入tensorflow.出现importError: DLL load failed: 找不到指定的模块。python3.7

ImportError:来自“tensorflow.python.profiler”的“trace”

Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录

TensorFlow学习笔记(2)ImportError: No module named tensorflow