繁体   English   中英

从终端运行脚本时无法导入 tensorflow,即使 tensorflow 在 jupyter 笔记本和终端中工作

[英]Can't import tensorflow when run script from terminal, even though tensorflow works in jupyter notebook and terminal

TLDR:当我编写一个名为 toy_model.py 的小脚本并尝试从命令行运行它时

py toy_model.py

我收到一条错误消息,抱怨加载 tensorflow。

但是,我可以在许多其他设置中使用导入和使用 tensorflow 没有任何问题,例如

  • 在 jupyter 笔记本中
  • 当我将 toy_model.py 导入 jupyter 笔记本时
  • 当我从命令行使用 python

我已经尝试了很多推荐的解决方案(在我正在使用的 Anaconda Navigator 虚拟环境中下载 Spyder,从 tensorflow 2.1.0 切换到 tensorflow 和没有成功的 Visual Studio 2.0。

对于这个问题的任何帮助或见解,我将不胜感激,我将在下面更详细地描述。


我使用 Anaconda Navigator 在 Python 中编码。 在 Anaconda Navigator 中,我准备了一个名为updated_tensorflow的环境。 我使用 Anaconda 的 package 管理器将 tensorflow 2.0.0 和 keras 2.3.1 下载到此环境中。

我准备了一个名为test1.ipynb的 jupyter notebook,代码如下:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))])
model.compile(optimizer='adam',
          loss= 'sparse_categorical_crossentropy', #should be 'sparse_categorical_crossentropy' b/c one-hot encoded
          metrics=['accuracy'])
model.predict([[1,2,3,4,5,6,7,8,9,10], [-1,2,-3,4,-5,6,-7,8,-9,10]])

当我从环境updated_tensorflow运行test1.ipynb时,没有问题。

在终端中,我进入环境updated_tensorflow ,并通过在命令行中键入python开始使用 python。 我输入了与test1.ipynb相同的代码,没有任何问题。

我创建了一个名为toy_model.py的文件,其中包含以下代码:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))])
model.compile(optimizer='adam',
          loss= 'sparse_categorical_crossentropy', #should be 'sparse_categorical_crossentropy' b/c one-hot encoded
          metrics=['accuracy'])

然后,我在与test2.ipynb toy_model1.py代码如下:

from toy_model1 import *
model.predict([[1,2,3,4,5,6,7,8,9,10], [-1,2,-3,4,-5,6,-7,8,-9,10]])

这个单元运行没有问题。

最后,在同一个目录中,我生成了一个名为toy_model.py的小文件,其中包含代码

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))])
model.compile(optimizer='adam',
          loss= 'sparse_categorical_crossentropy', #should be 'sparse_categorical_crossentropy' b/c one-hot encoded
          metrics=['accuracy'])
model.predict([[1,2,3,4,5,6,7,8,9,10], [-1,2,-3,4,-5,6,-7,8,-9,10]])

然后在我的终端中,仍然在环境updated_tensorflow中,我移动到包含toy_model.py的目录并尝试运行它

py toy_model.py

我收到以下消息,表明我无法导入 tensorflow:

Traceback (most recent call last):
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\me\Anaconda3\Anaconda3\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 "C:\Users\me\Anaconda3\Anaconda3\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "C:\Users\me\Anaconda3\Anaconda3\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 "toy_model.py", line 3, in <module>
    import tensorflow as tf
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 41, in <module>
    from tensorflow.python.tools import module_util as _module_util
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\__init__.py", line 50, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 69, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\me\Anaconda3\Anaconda3\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 "C:\Users\me\Anaconda3\Anaconda3\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "C:\Users\me\Anaconda3\Anaconda3\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.

我在尝试解决此问题时所遵循的一些建议包括:

  • 确保 pip 和设置工具已更新

  • 使用 pip 卸载并重新安装 tensorflow 和 keras

  • 使用 conda 卸载和重新安装 tensorflow 和 keras

  • 从 tensorflow 2.1.0 切换到 tensorflow 到 2.0.0

  • 在我的基础 anaconda 环境上安装 tensorflow 和 keras

  • 在我的机器上安装 tensorflow 和 keras

  • 在我的updated_tensorflow环境中下载 Spyder

  • 下载 Microsoft Visual Studios 都没有成功。

我将非常感谢在理解和修复我所犯的任何错误方面提供的任何帮助。 如果我可以在终端中使用 run.py 文件,而不是在 Jupyter 笔记本中专门使用 python,那就太好了!

即使是关于错误消息含义的提示也会有所帮助:我没有正确理解 DLL 甚至是什么。

听起来,通过调用python ,您没有获得具有 tensorflow 的特定 python 安装(或 Z2C39BC19B761AC36FEDZ042 安装已损坏)76D146。 默认情况下,调用python将为您提供系统默认值(它是环境路径中的第一个,所以这是第一个命中)。

我建议准确确定您的笔记本正在使用哪个 python 解释器,并通过说

/path/to/notebook/interpreter/python toy_model.py

尝试获取最新支持的 Microsoft Visual C++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM