2012-11-30 13 views
5

Zuvor habe ich versucht, mehrere DEMO-Django-Projekte mit einem virtuellen Host auf Apache zu hosten, und wurden erfolgreich mit Hilfe von Stackoverflow.Fehler beim Laden von pyodbc-Modul beim Ausführen auf Apache

Jetzt habe ich versucht, mein neues Projekt mit der gleichen Technik wie die vorherigen hosten. Mein neues Projekt ist mit der sql_server Datenbank verbunden. Mein Projekt läuft perfekt, wenn djangos eingebauter Server verwendet wird.

Wenn ich versuche, läuft Apache mit Ich erhalte eine 500 Internal Server Error und meinem Apache-Fehlerprotokolle zeigt -

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() 

Und ich tue -

Exception occurred processing WSGI script 

ImproperlyConfigured: Error loading pyodbc module: DLL load failed: A dynamic link library (DLL) initialization routine failed. 

Meine wsgi Datei sieht wie folgt aus haben "C: \ Windows \ SysWOW64 \ python27.dll" in meinem Gerät

Mein System - Windows 7, Apache 2.2, Python 2.7, django 1.4.2

Eine weitere Infos i auf meiner Maschine herausgefunden - Python 2.7 (r27: 82525, 4. Juli 2010, 09.01 Uhr: 59) [MSC v.1500 32 bit (Intel)] auf win32

Irgendeine Lösung in Richtung dieses ??

Thanks a lot guys ...

Antwort

4

ich es geschafft, dieses Problem zu lösen, nach Antworten für googeln severl Stunden verbringen, endlich eine Antwort here, gefunden, und es sagt:

Es scheint, dass diese Abhängigkeit wird durch das Ausführen von python.exe (das mit demselben verknüpft ist) ausgeführt. Wenn die DLL-Version des Python-Interpreters stattdessen von einem anderen Prozess gehostet wird, wendet die Windows sxs-Konfiguration die msvcr90-Abhängigkeit nur auf die Python-DLL an.

Dies bedeutet, dass im Allgemeinen, pyodbc.pyd (und wahrscheinlich pyodbcconf.pyd) werden in eingebettetem Python auf Fenster, es sei denn die Host-Anwendung verknüpft ist gegen die entsprechende Version des msvc Runtimes unbrauchbar.

Verwenden Sie mt.exe (ein frei verfügbares Tool in Windows sdk) und versuchen Sie die Befehle in der Befehlszeile.

Where do I get 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 

Hoffentlich wil dies für jemanden nützlich sein.

Prost

+0

Ich hatte keine pyodbcconf.pyd, aber die Ausführung des ersten Befehls funktionierte - danke! – Pakman

+0

Ich habe einen Fehler beim Ausführen von mt.exe c: \ Python32 \ Lib \ Site-Pakete> "c: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin \ mt.exe" -inputresource: c: \ windows \ syswow64 \ python32.dll; # 2 -outputresource: pyodbc.pyd; # 2 Microsoft (R) Manifest-Tool Version 6.1.7716.0 Urheberrecht (c) Microsoft Corporation 2009. Alle Rechte vorbehalten. mt.exe: allgemeiner Fehler c101008c: Fehler beim Lesen des Manifests von der Ressource der Datei "c: \ windows \ syswow64 \ python32.dll". Die angegebene Datei wurde vom System nicht gefunden. –

Verwandte Themen