Python
Apache 使用 mod_wsgi 顯示“Python 版本不匹配”
我正在嘗試讓 web.py 工作。
我已經編譯了 mod_wsgi 以使用 python2.6,並正確配置了我的虛擬主機(至少我很確定它是!)。hello, world 應用程序一直顯示為 404。我將 Apache 的日誌級別更改為 info。我看到以下內容:
[Wed Sep 28 15:41:12 2011] [info] mod_wsgi (pid=25969): Attach interpreter ''. [Wed Sep 28 15:42:55 2011] [info] mod_wsgi (pid=25969): Create interpreter 'clearpoint.turnleftllc.com|/budgetcalculator'. [Wed Sep 28 15:45:33 2011] [info] mod_wsgi (pid=25969): Destroying interpreters. [Wed Sep 28 15:45:33 2011] [info] mod_wsgi (pid=25969): Destroy interpreter 'clearpoint.turnleftllc.com|/budgetcalculator'. [Wed Sep 28 15:45:33 2011] [info] mod_wsgi (pid=25969): Cleanup interpreter ''. [Wed Sep 28 15:45:33 2011] [info] mod_wsgi (pid=25969): Terminating Python. [Wed Sep 28 15:45:33 2011] [error] Exception KeyError: KeyError(-1216178416,) in <module 'threading' from '/usr/lib/python2.6/threading.pyc'> ignored [Wed Sep 28 15:45:33 2011] [info] mod_wsgi (pid=25969): Python has shutdown. Fatal Python error: Interpreter not initialized (version mismatch?)
關於 KeyError,我真的不確定它來自哪裡。我從命令行(python26 code.py)測試了應用程序,它執行沒有錯誤。事實上,它沒有給出任何輸出。
以防萬一,這是我的 VirtualHost 配置以及應用程式碼:
Python 程式碼(直接取自 web.py 站點):
#!/usr/bin/python26 import web urls = ( '/.*', 'index' ) class index: def GET(self): return "Hello, world!" app = web.application(urls,globals()).wsgifunc()
虛擬主機:
<VirtualHost xxx.xxx.xxx.xxx:80> ServerAdmin "tom@turnleftllc.com" ServerName clearpoint.turnleftllc.com ServerAlias clearpoint ErrorLog logs/clearpoint_error_log DocumentRoot /home/turnleftllc/public_html/cpccs WSGIScriptAlias /budgetCalculator /home/turnleftllc/public_html/cpccs/apps/code.py Alias /budgetCalculator/static /home/turnleftllc/public_html/cpccs/apps/static AddType text/html .py <Directory /home/turnleftllc/public_html/cpccs> Order allow,deny Allow from all AllowOverride All </Directory> <Directory /home/turnleftllc/public_html/cpccs/apps> Order allow,deny Allow from all </Directory> </VirtualHost>
我使用的是 CentOS5,預設為 python2.4。我確實為 python2.6 解除安裝並重新編譯了 mod_wsgi(正如您在輸出中看到的,它肯定是在初始化 2.6)。
任何幫助將不勝感激!
確保您還沒有將 mod_python 載入到同一個 Apache 中。
閱讀以下內容並驗證您的安裝。
http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Shared_Library http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Installation_In_Use
http://code.google.com/p/modwsgi/wiki/InstallationIssues
KeyError 消息是因為您使用的是舊的 mod_wsgi 版本而不是最新版本,因此如果您從原始碼建構,請確保您使用的是 mod_wsgi 3.3。