一尘不染

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

python

大家好,我只是在学习烧瓶。我用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 ''

阅读 334

收藏
2021-01-20

共1个答案

一尘不染

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

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

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

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

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

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

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

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

2021-01-20