python - 无法使用 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
解决方案
卸载所有与 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 中可用。
推荐阅读
- java - 无法访问“org.gradle.api.artifacts.dsl.DependencyHandler”的超类型“java.lang.Object”
- python - 为什么 dict.pop() 在这里从两个字典中删除值而只指定一个?
- python - 使用 numpy Where 的多个 OR 条件
- r - RStudio:将单个数据框从一个项目文件夹复制到另一个?
- macos - 谁能告诉如何在 m1 MacBook Air 中安装 gcc?
- android - 问题:现在制作一个闹钟应用程序。所以,总结一下,现在有什么方法可以让我制作一个实际可行的警报应用程序吗?
- ffmpeg - 在 QuickTime 中无法播放视频格式为 qtrle 的透明电影
- flutter - Flutter ListView 在底部弹跳但不在顶部弹跳(iOS)
- rust - 如何使方法流不可知?
- python - 如何在 Django 中找到模型的每个实例