您说过,仅当您从交互式shell运行代码时,才会出现此问题。它是由
werkzeug(wsgi服务器
flask所基于的)功能引起的。
werkzeug如果更改了项目文件,则在调试模式下将自动重新启动服务器。每次检测到更改时,都会
werkzeug重新启动最初启动的 文件
。甚至第一次启动都是通过 文件名 完成的!
但是在交互式外壳中根本没有文件,并且
werkzeug认为您的文件被称为
""(空字符串)。然后,它尝试运行该文件。由于某种原因,它也认为
""指代包装。但是由于该软件包不存在
__main__,因此它也不能具有模块,因此会出现错误。
您可以通过
""直接运行来模拟该错误
python ""# prints: can't find '__main__' module in ''
您可以通过将debug设置为
False(也是默认值)来尝试禁用重新加载器:
app.run(debug=False, ...)
然后,它也应该在交互式会话中运行。但是,为什么要这么做呢?只需放入一个文件并运行它。



