Python 3.x Flask/Keras webservice ModuleNotFoundError:没有名为'的模块;tensorflow_core.keras';

Python 3.x Flask/Keras webservice ModuleNotFoundError:没有名为'的模块;tensorflow_core.keras';,python-3.x,tensorflow,flask,keras,importerror,Python 3.x,Tensorflow,Flask,Keras,Importerror,我正在构建一个简单的Web服务来对图像进行分类。 我的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

我正在构建一个简单的Web服务来对图像进行分类。 我的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'
*环境:开发
*调试模式:打开
*使用stat重新启动
*调试器处于活动状态!
*继续http://127.0.0.1:5000/ (按CTRL+C退出)
回溯(最近一次呼叫最后一次):
文件“\python\python37\lib\runpy.py”,第193行,在运行模块中作为主
“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
文件“\python\python37\lib\runpy.py”,第85行,在运行代码中
exec(代码、运行\全局)
文件“\.venv\Scripts\flask.exe\\uuu main\uuuu.py”,第9行,在
文件“\.venv\lib\site packages\flask\cli.py”,第966行,主目录
cli.main(prog_name=“python-m flask”如果为as_模块,则为无)
文件“\.venv\lib\site packages\flask\cli.py”,第586行,主目录
返回超级(烧瓶组,自身)。主(*args,**kwargs)
文件“\.venv\lib\site packages\click\core.py”,主目录第717行
rv=自调用(ctx)
调用中第1137行的文件“\.venv\lib\site packages\click\core.py”
返回进程结果(sub_ctx.command.invoke(sub_ctx))
调用中第956行的文件“\.venv\lib\site packages\click\core.py”
返回ctx.invoke(self.callback,**ctx.params)
调用中第555行的文件“\.venv\lib\site packages\click\core.py”
返回回调(*args,**kwargs)
文件“\.venv\lib\site packages\click\decorators.py”,第64行,在新函数中
返回ctx.invoke(f,obj,*args,**kwargs)
调用中第555行的文件“\.venv\lib\site packages\click\core.py”
返回回调(*args,**kwargs)
文件“\.venv\lib\site packages\flask\cli.py”,第860行,在run\u命令中
额外文件=额外文件,
文件“\.venv\lib\site packages\werkzeug\serving.py”,第1008行,运行\u simple
使用重新加载程序运行(内部、额外文件、重新加载程序间隔、重新加载程序类型)
文件“\.venv\lib\site packages\werkzeug\\ u reloader.py”,第337行,在运行时使用\u reloader
reloader.run()
文件“\.venv\lib\site packages\werkzeug\\u reloader.py”,第202行,运行中
对于链中的文件名(\u iter\u模块\u文件(),self.extra\u文件):
文件“\.venv\lib\site packages\werkzeug\\u reloader.py”,第24行,在iter模块文件中
filename=getattr(模块“\uuuuu文件”\uuuuuuu”,无)
文件“\.venv\lib\site packages\tensorflow\\uuu init\uuuu.py”,第50行,在u getattr中__
模块=自身。_加载()
文件“\.venv\lib\site packages\tensorflow\\uuu init\uuuu.py”,第44行,加载
模块=_importlib.import_模块(自身名称)
文件“\python\python37\lib\importlib\\uuuu init\uuuuu.py”,第127行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第1006行,在\u gcd\u导入中
文件“”,第983行,在_find_和_load中
文件“”,第965行,在“查找”和“加载”中解锁
ModuleNotFoundError:没有名为“tensorflow_core.keras”的模块
我不知道导入系统从我的.venv中搜索是否重要 我不知道自己到底应该寻找什么来解决这个问题


每一个提示都是受欢迎的

< p>我不认为这是一个解决方案,但是设置<代码> FraskJueDebug=1 < /COD>(OFF)将允许您继续工作,但是您需要在每次更改之后重新启动服务器。 该问题正在TensorFlow回购中跟踪,链接如下


一种非常适用于Flask==1.1.1和tensorflow==2.1.0的解决方案

在烧瓶中,您应该将“
导入tensorflow作为tf
”放在“
\uuuu init\uuuuuuuuuuuuuuy
”文件中


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

我还没有完全解决这个问题,但我发现它与flask debug mode设置为true有关。因此,作为一项非常烦人的工作,您可以关闭flask debug。@Xander是的,将debug设置为False将使其运行。谢谢。我会接受,并将其评为answer@brnc_我在GitHub.FWIW中添加了这个问题的答案,在GitHub上,人们也会向Django和Falcon报告这个问题。因此,虽然它似乎与基于这个问题的烧瓶有关,但可能不是。我有这个问题(我也在使用Flask),尽管它不容易复制——有时应用程序会启动并运行我的keras模型。@Xander bnrc_uuhi,在关闭Falsk调试后,你是否不仅成功运行了Flask应用程序,还有tensorflow模型本身?关闭调试的问题是,你的应用程序在更改后会停止实时重新加载,这很痛苦,但重新启动要比没有运行的服务器好all@xanderer你救了我!