【问题标题】:Webpy: how to auto reload source code when it changed?Webpy:更改时如何自动重新加载源代码?
【发布时间】:2011-10-10 15:57:22
【问题描述】:

我正在学习 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'”时,在网络浏览器中,它一直显示'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()

但我不知道为什么......

【问题讨论】:

    标签: python reload web.py


    【解决方案1】:

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

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

    它不会在文档更改时重新加载,而是这样做:

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

    【讨论】:

      【解决方案2】:

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

      web.config.debug = True
      

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          $ touch code.py
          

          【讨论】:

          • 谢谢你的帮助,下次我会注意到还有另一个原因:时间戳改变。谢谢。
          猜你喜欢
          • 2014-06-17
          • 2013-04-05
          • 1970-01-01
          • 2016-04-26
          • 1970-01-01
          • 2010-10-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多