Webpy: как автоматически перезагрузить исходный код, когда он изменился?

Я учусь webpy писать код. Я использую Webpy Framework 0.34. моя операционная система Ubuntu 11.04 и версия Python 2.7. в руководствах webpy.org говорится:

"При работе со встроенным веб-сервером приложение запускается в режиме отладки. В режиме отладки любые изменения в коде и шаблонах автоматически перезагружаются".

но это не работает

мой код code совпадает с примером учебника:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import web
class index():
    def GET(self):
        return 'a'

if __name__ == '__main__':
    urls = ('/', 'index')
    app = web.application(urls, globals())
    app.run()

и я использую встроенный веб-сервер (используется

python code.py

запустить сервер)

когда я меняю код "return" a "на" return "b" ", в веб-браузере он продолжает отображать" a ", пока я не перезапущу сервер.

перезапуск сервера каждый раз, когда вы переписываете код, тратит впустую время, почему механизм автозагрузки не работает? Я делаю что-то неправильно? Спасибо за любую помощь.


редактировать: извините, мой code.py не совсем совпадает с примером учебника, которые вызывают проблему. если я помещу строку назначения urls вне оператора if, механизм перезагрузки работает!!

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import web

class index():
    def GET(self):
        return 'a'

urls = ('/', 'index')

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

но я не знаю почему...

4 ответа

Если у вас есть отдельный route.py файл как я, не проектируйте файл как это:

from controllers.index import Index
urls = ('/','Index')

он не перезагрузится при изменении документа, вместо этого сделайте следующее:

urls = ('/','controllers.index.Index')

Попробуйте добавить следующее в начало вашего кода (после импорта):

web.config.debug = True

Для получения дополнительной информации: http://webpy.org/docs/0.3/tutorial

У меня есть только одна идея: ваш редактор не меняет время модификации ваших файлов. Попробуйте принудительно изменить временную метку, выполнив следующую команду после изменения кода и после этого проверьте результаты:

$ touch code.py

Вы должны обновить страницу после изменения и сохранить код

Другие вопросы по тегам