繁体   English   中英

web.py类导入错误

[英]web.py class importing error

这是我的index.py(位于/ NetWeave_Custom文件夹中)

import web
import lib.html

web.config.debug = True

urls = (
    '/', 'index',
)

class index:
    def GET(self):
        markup = html.abstr()
        print markup.element

if __name__ == "__main__":
    app.run()

app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()

然后是我的html.py(位于/ NetWeave_Custom / lib /中)

class abstr:
    element = 'Hello World';

但是我收到500个内部服务器错误。 谁能告诉我我在做什么错? 我是web.py框架的新手。 谢谢!

编辑:

通过上面的代码,我得到了错误:ImportError:没有名为lib.html的模块

最终编辑:

工作代码如下所示:

import web
from lib import html

web.config.debug = True

urls = (
    '/', 'index',
)

class index:
    def GET(self):
        markup = html.abstr()
        return markup.element

if __name__ == "__main__":
    app = web.application(urls, globals(), autoreload=False)
    app.run()

application = app.wsgifunc()

然后是我的html.py(位于/ NetWeave_Custom / lib /中)

class abstr:
    element = 'Hello World';

浏览器显示:“ Hello World”,因此更改是在调用应用程序之前定义的应用程序(不是很重要,但严格来说,这是必要的-如果没有此功能,它确实可以正常工作),返回markup.element而不是打印它,并创建一个据我了解,lib子目录中的__init__.py文件为空白,因此lib会被视为模块(或程序包?)。

谢谢!

您导入lib.html ,但不要使用该全名。 相反,您仅引用html

如果出现导入​​错误,则说明找不到lib包; 可能存在以下两种错误之一:

  • 您应该改用import html ,这也可以解决不正确的引用。

  • lib目录丢失了它的__init__.py文件(可以为空)。 该文件将使其成为一个包,并允许您导入它。 然后将对html的引用更改为lib.html

     class index: def GET(self): markup = lib.html.abstr() print markup.element 

    将导入更改为:

     from lib import html 

您还尝试在定义app之前运行它。 将最后几行更改为:

if __name__ == "__main__":
    app = web.application(urls, globals(), autoreload=False)
    app.run()

最后但并非最不重要的一点是,您需要将NetWeave_Custom目录(完整的绝对路径)添加到PYTHONPATH 如果使用的是mod_wsgi查看WSGIPythonPath指令。

答案有两个。 我在lib子目录中没有__init__.py文件。 另一个错误是我写了print而不return markup.element ... Doh!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM