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