【问题标题】:web.py class importing errorweb.py 类导入错误
【发布时间】:2012-12-27 17:16:48
【问题描述】:

这是我的 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 将被视为我理解的模块(或包?)。

谢谢!

【问题讨论】:

  • 500 有任何堆栈跟踪吗?将有助于确定问题。
  • 对不起,我也是服务器新手。是在其中一个日志文件中吗?
  • 如果你有日志文件,是的 :)
  • 检查编辑,谢谢:)

标签: python web.py


【解决方案1】:

您导入 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 文件来将它标记为一个包。 没有该文件的目录不能用于导入,除非它专门添加到 python 模块搜索路径 (sys.path)。
  • 我做了,但还是报错,html.py模块需要用web.py框架格式化吗?
  • @phileaton:错误是什么?请将其添加到您的问题中,我们只是在这里猜测,没有 full 回溯。
  • 它说没有名为 lib 的模块
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多