2012-04-12 25 views
11

Ich versuche, mit Python zu beginnen, kann aber nicht meine Server-Setup richtig für localhost (mit Ampps) einrichten. Python läuft sehr gut über IDLE und die Befehlszeile. Wenn ich jedoch die Datei im Browser öffne, wird der Code angezeigt und nicht ausgeführt..py Datei zeigt Code im Browser anstelle von

Ich folgte diesem Tutorial http://www.imladris.com/Scripts/PythonForWindows.html für cgi eingerichtet, aber es funktioniert nicht.

Hier ist der Code für mein Programm "Hallo Welt", wenn das einen Unterschied macht.

#!/usr/bin/env python 
# -*#!/usr/bin/python 

print "Content-type:text/html\r\n\r\n" 
print '<html>' 
print '<head>' 
print '<title>Hello Word - First CGI Program</title>' 
print '</head>' 
print '<body>' 
print '<h2>Hello Word! This is my first CGI program</h2>' 
print '</body>' 
print '</html>' 

Irgendwelche Vorschläge?

+0

Haben Sie die Datei ausführbar gemacht? Sind cgi-Skripte auf dem Server aktiviert? –

+2

Nachdem Sie dies funktioniert haben - überprüfen Sie Python-Syntax für mehrzeilige Strings mit dreifachen Anführungszeichen wie '" "" etwas "" – jsbueno

+0

@JoachimPileborg Ich glaube, ich habe die cgi-Skripte auf dem Server aktiviert, aber ich bin mir nicht sicher die ausführbare Datei. Wenn ich die Datei (das Symbol für die Datei selbst, nicht den Code) anschaue, hat sie das Python-Logo darauf, also bin ich mir nicht sicher, ob das bedeutet, dass es ausführbar ist. – user1104854

Antwort

6

Ihr Webserver behandelt Ihren Python-Code eher als statische Datei als als ausführbare Datei. Das Ziel ist, dass Apache Python ausführen soll und das stdout zurück an den Browser des Benutzers senden soll.

Ich bin nicht vertraut mit Ampps, aber die grundlegenden Apache Flow zu bekommen diese Einrichtung ist etwas wie das.

  1. Bearbeiten Sie Ihre Optionen Linie httpd.conf enthalten ExecCGI
  2. mit httpd.conf als CGI-Handler Ihre Python-Datei registrieren, indem Sie die folgende Zeile ein:
    AddHandler .py
  3. Restart Apache
  4. Stellen Sie sicher, dass Ihre Shebang-Zeile (das #!/Usr/bin/env-Python-Bit oben) tatsächlich auf den Pfad zu Ihrer ausführbaren Python-Datei zeigt. Für python2.6 auf C :, leben könnte dies lesen:
    #!\Python26\python
  5. Wenn Ihre Scripts tragbar sein müssen, statt Modifizierung der Shebang-Zeile die Zeile ScriptInterpreterSource registry zu httpd.conf hinzufügen, und stellen Sie sicher, dass die Fenster öffnet * .py-Dateien mit Python.exe standardmäßig. Dies kann durch Doppelklicken auf ein Skript getestet werden. Wenn es nicht ausgeführt wird, klicken Sie mit der rechten Maustaste darauf, wählen Sie "Öffnen mit" und dann "Andere" und suchen Sie dann nach "python.exe". Stellen Sie sicher, dass Sie das Kontrollkästchen "Immer dieses Programm zum Öffnen von Dateien dieses Typs verwenden" aktivieren. Zu dieser here gibt es einen Microsoft Knowledge Base-Artikel.

Schließlich mod_wsgi oder FastCGI ist die bevorzugte Methode für das Erhalten Apache Python ausführen, mit dem Stand des Halt bevorzugt Traffic-Site (10 von Tausenden von Anfragen pro Tag) zu senken. Ich würde auch empfehlen, in Web-Frameworks wie web.py (sehr leicht) oder django (schwereres Gewicht, aber Sie sparen viel Zeit, wenn Sie Benutzereingaben sammeln oder mit einer Datenbank interagieren).

+0

Ampps war das erste Paket, das ich sah, das Python eingebaut hatte, also wählte ich es. Gibt es noch andere, die Sie empfehlen würden? Ich benutze XAMPP, wenn ich mit PHP programmiere, nicht sicher, ob es das unterstützt. – user1104854

+0

Ich wusste nicht, dass "Ampps" der Windows-Geschmack von Apache war - ich bin meistens ein Linux-Typ, und ich benutze hauptsächlich Lighttpd. Siehe bearbeitete Antwort, bitte. –

+1

Außerdem wäre es besser, mod-wsgi als cgi zu verwenden. Ich werde die Antwort erneut bearbeiten, um dies zu berücksichtigen, und Links hinzufügen. –

Verwandte Themen