首页 > 解决方案 > 无法使用 spyder(任何版本)导入 tensorflow 2.x:Tensorflow_core.estimator 问题

问题描述

对于不同的 tensorflow 和 pytorch 版本,我有不同的 conda 环境。在终端上调用 python 时,它们都可以正常工作。

我也可以将它们与 Spyder 一起使用,或者在每个 conda 环境中单独安装 Spyder,或者使用此处描述的“模块化方法”:https ://github.com/spyder-ide/spyder/wiki/Working-with-packages Spyder 中的-and-environments-in-Spyder

但是,在处理 tensorflow 2.x 时,每次使用 spyder 导入 tensorflow 的尝试都会失败,总是出现无法导入模块的相同错误tensorflow_core.estimator

Error in callback <bound method AutoreloadMagics.post_execute_hook of <autoreload.AutoreloadMagics object at 0x7f41b8711990>> (for post_execute):
Traceback (most recent call last):

  File "/home/user/anaconda3/envs/tf2_env/lib/python3.7/site-packages/IPython/extensions/autoreload.py", line 538, in post_execute_hook
    _, pymtime = self._reloader.filename_and_mtime(sys.modules[modname])

  File "/home/user/anaconda3/envs/tf2_env/lib/python3.7/site-packages/IPython/extensions/autoreload.py", line 184, in filename_and_mtime
    if not hasattr(module, '__file__') or module.__file__ is None:

  File "/home/user/anaconda3/envs/tf2_env/lib/python3.7/site-packages/tensorflow/__init__.py", line 50, in __getattr__
    module = self._load()

  File "/home/user/anaconda3/envs/tf2_env/lib/python3.7/site-packages/tensorflow/__init__.py", line 44, in _load
    module = _importlib.import_module(self.__name__)

  File "/home/user/anaconda3/envs/tf2_env/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)

  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import

  File "<frozen importlib._bootstrap>", line 983, in _find_and_load

  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked

ModuleNotFoundError: No module named 'tensorflow_core.estimator'

这个问题特别适用于 tensorflow 2(2.0 和 2.1)和 Spyder(版本 3、4 和 5)。

我一直无法找到一种方法来完成这项工作,而且我不知道为什么 Spydertensorflow_core.estimator在导入 tensorflow 时会尝试加载模块,或者为什么在从终端使用 python 导入 tensorflow 时这不是错误。这不是环境问题:环境中的所有其他模块都存在并且可以使用 Spyder 导入。

这个模块的问题并不少见,但我还没有看到单一的解决方案:

ModuleNotFoundError:没有名为“tensorflow_core.estimator”的模块用于 tensorflow 2.1.0

https://github.com/tensorflow/tensorflow/issues/34607

https://www.reddit.com/r/tensorflow/comments/jesmaq/how_to_resolve_no_module_named_tensorflow/

https://nomodulenamed.com/m/tensorflow_core.python.autograph.core.config_lib

标签: pythontensorflowanacondaspyder

解决方案


卸载所有与 tensorflow 相关的东西。

$ pip uninstall tensorflow-estimator \
  tensorboard tb-nightly tf-estimator-nightly

然后再次安装软件包。这通常可以修复它。

来源:https ://github.com/tensorflow/tensorflow/issues/32952

编辑:如果您从 Anaconda 安装了 Spyder,请转到 Anaconda 启动器。转到环境,您将看到其中两个:root 和 tensorflow。后者是根据 tensorflow.org 的说明创建的。只需在根目录上运行所有这些指令,不要激活 tensorflow 环境,它会起作用。一切都将在 spyder 中可用。


推荐阅读