烧瓶“hello world”无法在调试模型中运行

Posted

技术标签:

【中文标题】烧瓶“hello world”无法在调试模型中运行【英文标题】:flask "hello world" can not run in debug model 【发布时间】:2011-07-25 11:52:32 【问题描述】:

我按照官方文档,安装了virtualenv和flask,然后python hello.py 但是有一点不对:

 * Running on http://127.0.0.1:5000/
 * Restarting with reloader: inotify events
Traceback (most recent call last):
  File "hello.py", line 9, in <module>
    app.run(debug=True)
  File "/home/aa/prj/env/lib/python2.7/site-packages/Flask-0.7.2-py2.7.egg/flask/app.py", line 553, in run
    return run_simple(host, port, self, **options)
  File "/home/aa/prj/env/lib/python2.7/site-packages/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 609, in run_simple
    run_with_reloader(inner, extra_files, reloader_interval)
  File "/home/aa/prj/env/lib/python2.7/site-packages/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 528, in run_with_reloader
    reloader_loop(extra_files, interval)
  File "/home/aa/prj/env/lib/python2.7/site-packages/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 436, in reloader_loop
    reloader(fnames, interval=interval)
  File "/home/aa/prj/env/lib/python2.7/site-packages/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 464, in _reloader_inotify
    mask = reduce(lambda m, a: m | getattr(EventsCodes, a), mask, 0)
  File "/home/aa/prj/env/lib/python2.7/site-packages/Werkzeug-0.7-py2.7.egg/werkzeug/serving.py", line 464, in <lambda>
    mask = reduce(lambda m, a: m | getattr(EventsCodes, a), mask, 0)
AttributeError: type object 'EventsCodes' has no attribute 'IN_DELETE_SELF'

我的 hello.py:

from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(debug=True)

但如果没有调试,那可以吗?为什么? 我的 /env/lib/python2.7/site-packages:

distribute-0.6.10-py2.7.egg
Jinja2-2.6-py2.7.egg
Werkzeug-0.7-py2.7.egg
easy-install.pth
pip-0.7.2-py2.7.egg

【问题讨论】:

【参考方案1】:

这似乎是由 pyinotify 的 API 更改触发的错误,您必须也安装了该 API。您可以删除 pyinotify 或使用肮脏的 hack 来强制它使用 stat() 而不是 pyinotify。在werkzeug/serving.py 的第 496 行尝试添加(在尝试导入 pyinotify 的部分下方):

# dirty hack
reloader = _reloader_stat_loop
reloader_name = "stat() polling"

请务必将错误报告给werkzeug 开发人员。

【讨论】:

是的,它将在 werkzeug 0.7.1 中修复。 IPython 还有另一个类似的问题。

以上是关于烧瓶“hello world”无法在调试模型中运行的主要内容,如果未能解决你的问题,请参考以下文章

使用VS2013调试C语言时出错,连简单的Hello World都报错,调试时显示无法启动程序,无法访问

Go 编写第一个Hello world

c ++ vtk:hello world仅在发布时在运行时失败

我需要安装啥来获得在 Windows Server 2012 R2 Standard 上运行的 C++ hello world .exe 的 x64 调试版本?

我最近使用谷歌应用程序引擎(灵活)部署了一个“hello,word”烧瓶应用程序,而且速度非常慢

ldd3-2 构造和运行模块:Hello World模块笔记