Webpy:如何在代码变更时自动重载?
我正在学习用webpy写代码。 我使用的是Webpy框架0.34,操作系统是ubuntu 11.04,Python版本是2.7。 在webpy.org的教程中提到:
“当使用内置的web服务器运行时,它会以调试模式启动应用程序。在调试模式下,任何对代码和模板的更改都会自动重新加载。”
但是这并没有生效。
我的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()
而且我使用的是内置的web服务器(用
python code.py
来启动服务器)
当我把代码中的“return 'a'”改成“return 'b'”时,网页上一直显示'a',直到我重启服务器。
每次修改代码都要重启服务器太浪费时间了,为什么自动重载机制不工作呢?我是不是做错了什么?谢谢大家的帮助。
编辑:抱歉,我的code.py和教程中的示例不完全一样,这导致了问题。如果我把网址分配的那行代码放到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 个回答
1
试着在你的代码最上面(导入部分之后)加上以下内容:
web.config.debug = True
想了解更多信息,可以查看这个链接: http://webpy.org/docs/0.3/tutorial#developing
1
我只有一个想法:你的编辑器没有更新你文件的修改时间。试着在修改代码后运行下面的命令,这样可以强制更新文件的时间戳,然后再检查一下结果:
$ touch code.py
2
如果你像我一样有一个单独的 route.py
文件,千万不要这样设计这个文件:
from controllers.index import Index
urls = ('/','Index')
这样的话,文件在修改后不会自动重新加载,应该这样做:
urls = ('/','controllers.index.Index')