2012-12-27 95 views
0

這裏是我的index.py(這是該文件夾中/ NetWeave_Custom)web.py類進口錯誤

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框架的新手。謝謝!

編輯:

通過上面我的代碼得到errror: 導入錯誤:沒有名爲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'; 

瀏覽器中顯示:「你好世界」 所以變化定義的應用程序調用它之前(不是真的相關,但對你stricties有必要 - 它確實沒有這個做工精細),返回markup.element而不是打印它,並在lib子目錄中創建一個空白的__init__.py文件,以便我將它理解爲一個模塊(或包?)。

謝謝!

+0

任何堆棧跟蹤與500?將有助於確定問題。 – favoretti

+0

對不起,我對服務器也是新手。這是在其中一個日誌文件? – eatonphil

+0

如果你有日誌文件,是的:) – favoretti

回答

0

答案是雙重的。我在lib子目錄中沒有__init__.py文件。另一個錯誤是我寫了print而不是return markup.element ...... Doh!

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指令。

+0

你確定我不需要特別引用它,因爲它是在一個子文件夾? – eatonphil

+0

如果'lib'是一個子文件夾,那麼它需要'__init __。py'文件將其標記爲一個包。除非特別添加到python模塊搜索路徑('sys.path'),否則無法使用該文件的目錄*不能用於導入。 –

+0

我做到了,但仍然出現錯誤,html.py模塊是否需要使用web.py框架進行格式化? – eatonphil