Webpy:如何在源代码发生变化时自动重新加载源代码?

时间:2011-07-21 23:05:25

标签: python reload web.py

我正在学习编写代码的webpy。 我正在使用Webpy框架0.34。我的操作系统是ubuntu 11.04,python的版本是2.7。 在webpy.org的tutorials中它说:

  

“使用内置网络服务器运行时,它会启动应用程序   在调试模式下。在调试模式下,对代码和模板的任何更改都是   自动重新加载

但它不起作用。

我的code.py与教程的示例相同:

#!/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'”时,在Web浏览器中,它会一直显示“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 个答案:

答案 0 :(得分:1)

我只有一个想法:您的编辑器不会更改文件修改的时间。尝试通过在代码修改后运行以下命令来强制更改时间戳,然后检查结果:

$ touch code.py

答案 1 :(得分:1)

尝试将以下内容添加到代码顶部(导入后):

web.config.debug = True

了解更多信息:http://webpy.org/docs/0.3/tutorial#developing

答案 2 :(得分:1)

如果您有像我这样的单独route.py文件,请不要像这样设计文件:

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

它不会在文档更改时重新加载,而是执行此操作:

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

答案 3 :(得分:-1)

更改并保存代码后,您应该刷新页面