Webpy:如何在代码变更时自动重载?

4 投票
4 回答
4238 浏览
提问于 2025-04-16 22:02

我正在学习用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')

撰写回答