在Apache上运行时加载pyodbc模块时出错

sha*_*r90 5 python apache django mod-wsgi pyodbc

以前我一直在尝试使用apache上的虚拟主机托管多个DEMO django项目,并且已成功借助stackoverflow.

现在我一直在尝试使用与之前相同的技术来托管我的新项目.我的新项目已连接到sql_server数据库.使用djangos内置服务器时,我的项目运行完美.

当我尝试使用apache运行时,我得到500内部服务器错误,我的apache错误日志显示 -

Exception occurred processing WSGI script 

ImproperlyConfigured: Error loading pyodbc module: DLL load failed: A dynamic link library (DLL) initialization routine failed.
Run Code Online (Sandbox Code Playgroud)

我的wsgi文件看起来像这样 -

import os
import sys

path = 'C:/path/project1'
if path not in sys.path:
    sys.path.append(path)

os.environ["DJANGO_SETTINGS_MODULE"] = "settings"

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

我的机器上有"C:\ Windows\SysWOW64\python27.dll"

我的系统 - Windows 7,Apache 2.2,python 2.7,django 1.4.2

我在我的机器上发现的另一个信息 - 在win32上的Python 2.7(r27:82525,2010年7月4日,09:01:59)[MSC v.1500 32位(英特尔)]

任何解决方案?

非常感谢...

sha*_*r90 4

我设法解决了这个问题,花了几个小时在谷歌上搜索答案后,终于在这里找到了答案,它说:

看来这种依赖关系是通过在 python.exe 内部运行来满足的(它与相同的链接相同)。当 python 解释器的 dll 版本由另一个进程托管时,Windows sxs 配置仅将 msvcr90 依赖项应用于 python dll。

这意味着,一般来说,pyodbc.pyd(以及可能的 pyodbcconf.pyd)在 Windows 上的嵌入式 python 中将无法使用,除非主机应用程序链接到适当版本的 msvc 运行时。

使用 mt.exe(Windows sdk 中免费提供的工具)并尝试命令行上的命令。

从哪里获取 mt.exe?

mt.exe -inputresource:c:\windows\syswow64\python27.dll;#2 -outputresource:pyodbc.pyd;#2

mt.exe -inputresource:c:\windows\syswow64\python27.dll;#2 -outputresource:pyodbcconf.pyd;#2
Run Code Online (Sandbox Code Playgroud)

希望这对某人有用。

干杯