バージョン:
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がPythonを呼び出すmod_wsgiで動作することを確認し、コマンドラインから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のバージョンは1つしかインストールされていません。Apacheをサービスとして、および管理者アカウントでコンソールから実行してみました。
別のマシンでもほぼ同じセットアップを使用していますが、違いはWindows 2003Serverx86であるということです。Windows 2008 R2に移行していますが、本番Webセットアップをテストしたかったのですが、行き詰まりました。