python flask在''中找不到'__main__'模块

发布于 2021-01-29 14:10:44

大家好,我只是在学习烧瓶。我用pip来安装它。然后,当我运行此基本代码时,我得到一个错误。基本上,我看到它的工作,然后突然退出,并出现以下错误。这可能看起来是一些环境问题,但我不确定。前几天这很奇怪,现在却行不通。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'


if __name__ == '__main__':
    app.run(debug=True, port=8000, host='0.0.0.0')

 * Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
 * Restarting with stat
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3: can't find '__main__' module in ''
关注者
0
被浏览
161
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您说过,仅当您从交互式shell运行代码时,才会出现此问题。它是由werkzeug(wsgi服务器flask所基于的)功能引起的。

    werkzeug如果更改了项目文件,则在调试模式下将自动重新启动服务器。每次检测到更改时,都会werkzeug重新启动最初启动的 文件
    。甚至第一次启动都是通过 文件名 完成的!

    但是在交互式外壳中根本没有文件,并且werkzeug认为您的文件被称为""(空字符串)。然后,它尝试运行该文件。由于某种原因,它也认为""指代包装。但是由于该软件包不存在__main__,因此它也不能具有模块,因此会出现错误。

    您可以通过""直接运行来模拟该错误

    python ""
    # prints: can't find '__main__' module in ''
    

    您可以通过将debug设置为False(也是默认值)来尝试禁用重新加载器:

    app.run(debug=False, ...)
    

    然后,它也应该在交互式会话中运行。但是,为什么要这么做呢?只需放入一个文件并运行它。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看