从IPython运行Flask引发了SystemExit

use*_*657 4 python ipython flask jupyter

我正在尝试从IPython运行我的Flask应用程序.但是,它失败并出现SystemExit错误.

from flask import Flask

app = Flask(__name__)

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

if __name__ == '__main__':
   app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

使用IPython运行它会显示以下错误:

SystemExit                                Traceback (most recent call last)
<ipython-input-35-bfd7690b11d8> in <module>()
     17 
     18 if __name__ == '__main__':
---> 19    app.run(debug = True)

/Users/ravinderbhatia/anaconda/lib/python2.7/site-packages/flask/app.pyc in run(self, host, port, debug, **options)
    770         options.setdefault('use_debugger', self.debug)
    771         try:
--> 772             run_simple(host, port, self, **options)
    773         finally:
    774             # reset the first request information if the development server

/Users/ravinderbhatia/anaconda/lib/python2.7/site-packages/werkzeug/serving.py in run_simple(hostname, port, application, use_reloader, use_debugger, use_evalex, extra_files, reloader_interval, reloader_type, threaded, processes, request_handler, static_files, passthrough_errors, ssl_context)
    687         from ._reloader import run_with_reloader
    688         run_with_reloader(inner, extra_files, reloader_interval,
--> 689                           reloader_type)
    690     else:
    691         inner()

/Users/ravinderbhatia/anaconda/lib/python2.7/site-packages/werkzeug/_reloader.py in run_with_reloader(main_func, extra_files, interval, reloader_type)
    248             reloader.run()
    249         else:
--> 250             sys.exit(reloader.restart_with_reloader())
    251     except KeyboardInterrupt:
    252         pass

SystemExit: 1
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 14

您正在使用Jupyter Notebook或IPython来运行开发服务器.您还启用了调试模式,默认情况下启用重新加载器.重新加载器尝试重新启动IPython无法处理的进程.

优选地,使用该flask命令来运行开发服务器.

export FLASK_APP=my_app.py
export FLASK_DEBUG=1
flask run
Run Code Online (Sandbox Code Playgroud)

或者python如果您仍想使用app.run,则使用普通解释器运行应用程序,不再推荐使用.

python my_app.py
Run Code Online (Sandbox Code Playgroud)

如果app.run要从Jupyter 调用,请禁用重新加载器.

app.run(debug=True, use_reloader=False)
Run Code Online (Sandbox Code Playgroud)