[Django] Invalid command 'import' mit mod_wsgi

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 448
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Freitag 2. September 2011, 13:33

Hallo,

nach einem Rechnerwechsel und dem Wechsel von Python 2.6 auf 2.7 versuche ich, eine Django-Webseite lokal wieder zum Laufen zu bringen.
Als Testumgebung verwende ich XAMPP. OS ist Windows Vista. Python wurde der Variable PATH zugefügt und funktioniert.
Leider kann ich aber den Apache nicht starten. Ich bekomme immer nur folgende Fehlermeldung:

Code: Alles auswählen

Syntax error on line 2 of C:/pages/AIS/apache/mod.wsgi:
Invalid command 'import', perhaps misspelled or defined by a module not included in the server configuration
Die Datei mod_wsgi.so(für Apache2.2 und Py2.7) habe ich von http://code.google.com/p/modwsgi/wiki/D ... tware?tm=2 geladen.
In der httpd.conf habe ich folgende zwei Zeilen aufgenommen:

Code: Alles auswählen

LoadModule wsgi_module modules/mod_wsgi.so
Include "C:/pages/AIS/apache/mod.wsgi"
In der apache_wsgi.conf habe ich auch:

Code: Alles auswählen

WSGIScriptAlias / "C:/pages/AIS/apache/mod.wsgi"
Und hier die mod.wsgi:

Code: Alles auswählen

import os
import sys

sys.path.append('C:/python27/lib/site-packages/django')
sys.path.append('C:/pages')

os.environ['DJANGO_SETTINGS_MODULE'] = 'AIS.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Wenn ich den Apache ohne die Include-Anweisung in der httpd.conf starte, sieht alles normal aus. In der Log steht dann u.a.:

Code: Alles auswählen

[Fri Sep 02 14:17:50 2011] [warn] mod_wsgi: Compiled for Python/2.7.
[Fri Sep 02 14:17:50 2011] [warn] mod_wsgi: Runtime using Python/2.7.2.
und

Code: Alles auswählen

[Fri Sep 02 14:17:50 2011] [info] mod_wsgi (pid=7256): Initializing Python.
[Fri Sep 02 14:17:51 2011] [info] mod_wsgi (pid=7256): Attach interpreter ''.
Habe ich da noch irgendetwas übersehen? Eigentlich sollten doch keine weiteren Apache-Module notwendig sein. Aber warum kennt der dann das 'import' nicht?

Grüße
Stephan
Benutzeravatar
jens
Moderator
Beiträge: 8487
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 2. September 2011, 13:48

Wenn du virtualenv nutzt, dann mußt du das IMHO neu erstellen. Ansonsten mal alle *.pyc Dateien löschen...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Mawilo
User
Beiträge: 448
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Freitag 2. September 2011, 14:02

Danke, die *.pyc-Dateien waren die Fehlerursache. :? Jetzt läufts wieder.

Grüße
Stephan
Benutzeravatar
Mawilo
User
Beiträge: 448
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Montag 5. September 2011, 08:50

Ich war leider etwas vorschnell und hatte eine Raute in der httpd.conf übersehen. Sobald ich die Datei mod.wsgi wieder aktiviere, ist der Fehler wieder da. Das Löschen der *.pyc-Dateien hat doch nicht geholfen. mod_alias und mod_vhost_alias sind aktiv.
Benutzeravatar
jens
Moderator
Beiträge: 8487
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 5. September 2011, 09:01

Irgendeine Komponente hat den Wechsel von Python 2.6 auf 2.7 vielleicht nicht mit gemacht.

virtualenv hast du nicht genutzt? Vielleicht veraltete Python module per easy_install/pip im globalen Python installiert?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Mawilo
User
Beiträge: 448
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Montag 5. September 2011, 09:16

Nein, virtualenv habe ich nicht genutzt. Python incl. der benötigten Module habe ich auf dem Rechner neu aufgespielt. Kann es sein, das die vorkompilierte Version von mod_wsgi für Py2.7 einen Treffer hat? Anders kann ich es mir nicht erklären.
BlackJack

Montag 5. September 2011, 09:17

Ich denke den Fehler bei Python-Code oder -Versionen zu suchen ist schon viel zu spät angesetzt. Die Fehlermeldung kommt doch bei der ``C:/pages/AIS/apache/mod.wsgi`` und da wird sich über das ``import`` beklagt. Das ist aber keine Fehlermeldung von Python sondern irgendetwas anderes scheint zu versuchen den Code zu interpretieren und kann mit ``import`` nichts anfangen.
Benutzeravatar
jens
Moderator
Beiträge: 8487
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 5. September 2011, 09:23

Mawilo hat geschrieben:Als Testumgebung verwende ich XAMPP. OS ist Windows Vista.
IMHO ist es einfacher mit virtualbox einen kleinen Linux Server auf zu setzten.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
/me
User
Beiträge: 3262
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Montag 5. September 2011, 14:01

Mawilo hat geschrieben:

Code: Alles auswählen

LoadModule wsgi_module modules/mod_wsgi.so
Include "C:/pages/AIS/apache/mod.wsgi"
Das Include ist merkwürdig. Mach das mal weg.

Etwas länger: Du bindest damit die Datei mod.wsgi in die Apache-Konfiguration ein. Die Datei enthält aber Python-Code und ist sicher kein Teil der Apache-Konfiguration. Als WSGIScriptAlias hingegen ist die Datei korrekt.
Antworten