2011-02-25 89 views
2

我有一個奇怪的Django問題,用mod_wsgi運行Django。擋板:Django「無法導入app.views」,但可以在WSGI中導入應用程序?

Django的是找到urls.py,然後說:

ViewDoesNotExist: Could not import app.views. Error was: No module named views 

奇怪的是,如果我有

import app 
在import語句

urls.py我沒有得到一個錯誤(直到達到app.views如上所述),但如果我有

from app import views 

在我的導入語句中,我收到錯誤。

我的Python路徑,如圖Django的調試信息,既有包含文件夾,並在其上的應用程序文件夾中。如果我從命令行運行Python,我可以導入app.views就好。我可以運行應用程序使用python manage.py runserver就好了。

我試着打印Python路徑從urls.py到stderr過了,它有它到App路徑。

可能會發生什麼?

我首先想到的是,有可能無法在應用程序文件夾中的__init__.py,但是有。

謝謝!

UPDATE

在runserver應用程序,如果我嘗試

print app.__file__ 
>> \path\to\app\__init__.py 

但在WSGI版本,我只看到:

print app.__file__ 
>> \path\to\app\ 

換句話說,它只是不發現__init__.pyc

回答

3

可能是一個循環依賴關係 - 東西views正在導入另一個模塊,這本身就是試圖導入views

+0

我把它換成views.py'的'內容'與打印「hello'',但仍是同樣的錯誤。哎呀! – AP257 2011-02-25 16:56:54

+1

另外,我可以使用'python manage.py runserver'運行Django應用程序。這個問題只存在於WSGI中。 – AP257 2011-02-25 17:04:32

+1

如果無法找到循環導入,則可以嘗試在'http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html'末尾描述的WSGI腳本,如解決方法。 – 2011-02-27 06:29:56

-2

您的Web服務器是出的文件句柄。爲守護進程模式重新配置WSGI應用程序。

+0

謝謝 - 任何指針如何做到這一點? (谷歌今天不是我的朋友) - 我試圖在http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango中定義的WSGIDaemonProcess,但沒有成功。 – AP257 2011-02-25 17:23:24

+0

也,我重新啓動apache後,即使立即得到錯誤 - 它會在那時用完文件句柄? – AP257 2011-02-25 17:39:19

+0

用完文件句柄將是一個不同的錯誤。丹尼爾指出,更可能是循環進口或進口訂貨問題。 – 2011-02-27 06:29:10

相關問題