【问题标题】:Flask/Keras webservice ModuleNotFoundError: No module named 'tensorflow_core.keras'Flask/Keras webservice ModuleNotFoundError: No module named 'tensorflow_core.keras'
【发布时间】:2019-12-09 17:10:00
【问题描述】:

我正在构建一个简单的网络服务来对图像进行分类。 分离我的 keras 模型分类正确,flask 服务正在运行。

但是当我尝试在我的烧瓶应用程序中使用 keras 模型时...

from flask import Flask

from myproject.keras_model_wrapper import get_result

APP = Flask(__name__)


@APP.route('/')
def keras_result():
    return get_result()

if __name__ == 'main':
    APP.run()

...发生导入错误。

 * Environment: development
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Traceback (most recent call last):
  File "<python_path>\python\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "<python_path>\python\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "<project_path>\.venv\Scripts\flask.exe\__main__.py", line 9, in <module>
  File "<project_path>\.venv\lib\site-packages\flask\cli.py", line 966, in main
    cli.main(prog_name="python -m flask" if as_module else None)
  File "<project_path>\.venv\lib\site-packages\flask\cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "<project_path>\.venv\lib\site-packages\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "<project_path>\.venv\lib\site-packages\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "<project_path>\.venv\lib\site-packages\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "<project_path>\.venv\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "<project_path>\.venv\lib\site-packages\click\decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "<project_path>\.venv\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "<project_path>\.venv\lib\site-packages\flask\cli.py", line 860, in run_command
    extra_files=extra_files,
  File "<project_path>\.venv\lib\site-packages\werkzeug\serving.py", line 1008, in run_simple
    run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
  File "<project_path>\.venv\lib\site-packages\werkzeug\_reloader.py", line 337, in run_with_reloader
    reloader.run()
  File "<project_path>\.venv\lib\site-packages\werkzeug\_reloader.py", line 202, in run
    for filename in chain(_iter_module_files(), self.extra_files):
  File "<project_path>\.venv\lib\site-packages\werkzeug\_reloader.py", line 24, in _iter_module_files
    filename = getattr(module, "__file__", None)
  File "<project_path>\.venv\lib\site-packages\tensorflow\__init__.py", line 50, in __getattr__
    module = self._load()
  File "<project_path>\.venv\lib\site-packages\tensorflow\__init__.py", line 44, in _load
    module = _importlib.import_module(self.__name__)
  File "<python_path>\python\python37\lib\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.keras'

我不知道导入系统搜索我的 .venv 是否重要 和 TBH 我不知道,我应该自己寻找什么来解决它。

欢迎任何提示

【问题讨论】:

  • 我还没有完全解决这个问题,但我发现它与烧瓶调试模式设置为真有关。因此,作为一项非常烦人的工作,您可以关闭烧瓶调试。
  • @xanderer 是的,将 debug 设置为 False 使其运行。非常感谢。我会接受并将其评为答案
  • @brnc_ 我在 GitHub 中添加了它作为答案,其中包含有关该问题的信息。
  • FWIW,在 GitHub 上,人们也用 Django 和 Falcon 报告了这个问题。因此,虽然基于这个问题它似乎与 Flask 有关,但可能不是。我有这个问题(我也在使用 Flask),虽然它不容易复制——有时应用程序会启动并运行我的 keras 模型。
  • @xanderer bnrc_ 嗨,关闭 Falsk 调试后,您是否成功运行了烧瓶应用程序,还成功运行了 tensorflow 模型本身?

标签: python-3.x tensorflow flask keras importerror


【解决方案1】:

我不认为这是一个解决方案,但设置 flask_debug=1(off) 将允许您继续工作,但您需要在每次更改后重新启动服务器。

TensorFlow Repo 中的问题正在以下链接中进行跟踪。

ModuleNotFoundError: No module named 'tensorflow_core.keras' in Flask

【讨论】:

  • 关闭调试的问题是您的应用在更改后停止实时重新加载
  • 这很痛苦,但重启总比没有运行的服务器好
  • @xanderer 你救了我!
【解决方案2】:

一种适用于 Flask==1.1.1 和 tensorflow==2.1.0 的解决方法

在 Flask 中,您应该将“import tensorflow as tf”放入“__init__.py”文件中。

在 Django 中,您应该将“import tensorflow as tf”放入“manage.py”文件中。

【讨论】:

    猜你喜欢
    • 2020-08-08
    • 2022-12-27
    • 2022-12-27
    • 2022-12-19
    • 2018-12-17
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    相关资源
    最近更新 更多