2012-04-17 43 views
1

版本:無法在Windows下的Apache導入pyodbc通過mod_wsgi的

Windows 2008 R2 x64 
Apache 2.2.19 x86 
Python 2.7.3 x86 
mod_wsgi-win32-ap22py27-3.3.so 
pyodbc-3.0.5.win32-py2.7 

我已驗證Apache的工作與mod_wsgi的打電話給Python和也證實了我可以在Python命令行導入pyodbc。但每當我在Apache的調用的腳本導入pyodbc我得到了Apache的錯誤日誌這些錯誤:

[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] mod_wsgi (pid=3700): Target WSGI script 'C:/Tenor/web/tcwsgi.py' cannot be loaded as Python module. 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] mod_wsgi (pid=3700): Exception occurred processing WSGI script 'C:/Tenor/web/tcwsgi.py'. 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] File "C:/Tenor/web/tcwsgi.py", line 8, in <module> 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1]  import tcweb 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] File "C:\\Tenor\\web\\tcweb.py", line 15, in <module> 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1]  from tc import config, db 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] File "C:\\Tenor\\lib\\tc\\db.py", line 6, in <module> 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1]  import pyodbc 
[Tue Apr 17 10:26:02 2012] [error] [client 127.0.0.1] ImportError: DLL load failed: The specified module could not be found. 

我試過的Dependency Walker但它並沒有顯示出任何問題(並不奇怪,因爲我可以從Python命令行導入pyodbc)。我只安裝了一個Python版本。我曾嘗試將Apache作爲服務運行,並從管理員帳戶下的控制檯運行。

我在另一臺機器上幾乎有相同的設置,區別在於它是Windows 2003 Server x86。我們正在遷移到Windows 2008 R2,並且我想測試生產Web設置,現在我陷入困境。

回答

1

請參閱my related postthis post on the pyodbc mailing list

由於(如果我理解正確),正在使用不同版本的C++編譯器編譯的二進制文件,您需要手動將Python27.dll中的清單嵌入到pyodbc.pyd文件中。

執行此操作的命令是mt.exe,它隨Visual Studio C++ 2008 Express一起提供。

相關問題