2012-11-30 10 views
5

Wcześniej próbowałem hostować wiele projektów DEMO Django przy użyciu hosta wirtualnego na Apache i pomyślnie z pomocą stackoverflow.Błąd podczas ładowania modułu pirodbc podczas pracy na Apache

Teraz próbuję hostować mój nowy projekt przy użyciu tej samej techniki, co poprzednie. Mój nowy projekt jest podłączony do bazy danych sql_server. Mój projekt działa idealnie, gdy używa się wbudowanego serwera djangos.

gdy próbuję uruchomiony przy użyciu Apache i uzyskać 500 Internal Server Error i moje dzienniki błędów apache pokazuje -

Exception occurred processing WSGI script 

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

Mój plik WSGI wygląda następująco -

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

i mam ma "C: \ Windows \ SysWOW64 \ python27.dll" w mojej maszynie

Mój system - Windows 7, Apache 2.2, Python 2.7, Django 1.4.2

Innym informacji znalazłem na moim komputerze - Python 2.7 (R27: 82525, 04 lipca 2010, 09:01: 59) [MSC v.1500 32 bit (Intel)] na win32

Jakieś rozwiązanie w tym kierunku?

dziękuję chłopaki ...

Odpowiedz

4

udało mi się rozwiązać ten problem, po spędzeniu severl godzin googlowania odpowiedzi, w końcu znalazłem odpowiedź here, a on mówi:

Wydaje się, że ta zależność jest spełniony przez uruchomienie wewnątrz pliku python.exe (który jest połączony z tym samym). Kiedy wersja DLL interpretera dll jest hostowana przez inny proces, konfiguracja sxs systemu Windows stosuje zależność msvcr90 tylko do biblioteki python.

To oznacza, że ​​w ogóle, pyodbc.pyd (i prawdopodobnie pyodbcconf.pyd) będzie niezdatny do użytku w Pythonie osadzonego na oknach chyba aplikacja hosta jest połączonych przeciwko odpowiedniej wersji msvc czasy pracy.

Użyj mt.exe (darmowo dostępne narzędzie w Windows SDK) i wypróbuj komendy w linii poleceń.

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 

Mam nadzieję, że wil to być przydatne dla kogoś.

Pozdrowienia

+0

Nie miałem pyodbcconf.pyd, ale wykonanie pierwszego polecenia zadziałało - dzięki! – Pakman

+0

Mam błąd podczas uruchamiania mt.exe c: \ Python32 \ Lib \ site-packages> "c: \ Program Files (x86) \ Microsoft SDK \ 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 Prawa autorskie (c) Microsoft Corporation 2009. Wszelkie prawa zastrzeżone. mt.exe: błąd ogólny c101008c: Nie można odczytać manifestu z zasobu pliku "c: \ windows \ syswow64 \ python32.dll". System nie może odnaleźć określonego pliku. –

Powiązane problemy