2012-06-16 65 views
2

我試圖讓Django運行在Apache2.22上的mod_wsgi,但是我得到一個內部500錯誤。 我知道還有其他問題,但他們沒有我的具體錯誤。這是我回溯:由於Python問題,Django WSGI腳本不會加載

[Sat Jun 16 02:17:48 2012] [info] [client 128.227.11.143] mod_wsgi (pid=23071, process='partender', application='www.***.com|'): Loading WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi'. 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] mod_wsgi (pid=23071): Target WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi' cannot be loaded as Python module. 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] mod_wsgi (pid=23071): Exception occurred processing WSGI script '/usr/home/***.com/zpencerq/part/apache/django.wsgi'. 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] Traceback (most recent call last): 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/home/partender.myprotosite.com/zpencerq/part/apache/django.wsgi", line 9, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  import django.core.handlers.wsgi 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 2, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  from threading import Lock 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/local/lib/python2.7/threading.py", line 15, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  from collections import deque 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] File "/usr/local/lib/python2.7/collections.py", line 9, in <module> 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143]  from operator import itemgetter as _itemgetter 
[Sat Jun 16 02:17:48 2012] [error] [client 128.227.11.143] ImportError: /usr/local/lib/python2.7/lib-dynload/operator.so: Undefined symbol "_PyUnicodeUCS4_AsDefaultEncodedString" 

它似乎是與Python的問題,但我不知道做什麼用的追溯,去年的錯誤。這是python安裝的問題嗎? 我已經完成了簡單的WSGI Hello World應用程序,並且工作得很好。這是一個與Django調用的問題。

我用「LDD」上mod_wsgi.so,得到了以下的輸出:

[email protected]# ldd mod_wsgi.so 
mod_wsgi.so: 
ldd: mod_wsgi.so: Shared object "mod_wsgi.so" not found, required by "ldd" 
mod_wsgi.so: exit status 1 
+0

作爲參考,'ldd'應該在Apache安裝中的mod_wsgi.so上運行。 IOW,給出一個完整的路徑或在同一個目錄中。請參閱http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Shared_Library –

+0

我在同一個目錄中。我正在採取這種反應,因爲mod_wsgi.so使用的是Python靜態庫而不是共享。 –

+0

沒有這樣的事情。它說ldd在你所在的目錄中找不到名爲mod_wsgi.so的文件。如果它是靜態鏈接的,它仍然會生成輸出,但不會顯示對libpythonX.Y.so的依賴。 –

回答

2

最有可能你的mod_wsgi的編譯對一個Python安裝,但你試圖迫使它使用不同的Python安裝。您遇到問題的原因是因爲一個Python安裝是使用UCS2支持和其他UCS4編譯的。

在mod_wsgi.so上使用'ldd'來顯示它嘗試使用的Python安裝,然後將該信息作爲問題的一部分與mod_wsgi配置或WSGI腳本內容一起提供,您嘗試強制它使用不同的Python安裝或不兼容的虛擬環境。

+0

我添加了輸出 –

+1

這個特定問題是由於Python的不兼容版本vs什麼mod_wsgi3編譯! (運行2.7.2,mod_wsgi3編譯爲2.7.3)謝謝!我可能很快就會有另一個問題,並會單獨發佈。只想說謝謝格雷厄姆!我發現你就像是回答許多這些django/wsgi問題的主要人員,並且還找到了你的嚮導! –