Python

Apache 使用 mod_wsgi 顯示“Python 版本不匹配”

  • September 29, 2011

我正在嘗試讓 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。

引用自:https://serverfault.com/questions/316614