Колба "Привет, мир" не может работать в отладочной модели - PullRequest
5 голосов
/ 25 июля 2011

Я следовал официальному документу, установил virtualenv и колбу, а затем 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'

my 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 Ответ

5 голосов
/ 25 июля 2011

Похоже, что это ошибка, вызванная изменением API-интерфейса pyinotify, которое вы также должны были установить. Вы можете удалить pyinotify или использовать грязный хак, чтобы заставить его использовать stat () вместо pyinotify. К строке 496 из werkzeug/serving.py попробуйте добавить (ниже той части, где он пытается импортировать pyinotify):

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

Обязательно сообщайте об ошибке разработчикам werkzeug .

...