以前我一直在尝试使用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.
我的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()
我的机器上有 “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位(英特尔)]
对此有什么解决方法?
非常感谢...
答案 0 :(得分:4)
我设法解决了这个问题,花了几个小时谷歌搜索答案后,终于找到答案here,并说:
看起来这个依赖关系是通过在python.exe里面运行来满足的(它是相同的链接)。当python解释器的dll版本由另一个进程托管时,windows sxs配置仅将msvcr90依赖项应用于python dll。
这意味着,一般情况下,pyodbc.pyd(可能还有pyodbcconf.pyd)在Windows上的嵌入式python中将无法使用,除非 主机应用程序链接到相应的版本 msvc运行时。
使用mt.exe(windows sdk中的免费工具)并在命令行上尝试命令。
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
希望这对某人有用。
干杯