J'ai un certain programme Python qui repose sur un script CGI, qui fonctionne quand je lance un Python BaseHTTPServer avec un CGIHTTPServer. Mais je voudrais que tout cela soit exécuté sans installer Python, j'ai donc utilisé Py2Exe.Le serveur local Py2Exe n'exécute pas CGI
Je parviens à créer un fichier .exe à partir de mon script, ce qui crée en effet un serveur Web local opérationnel lorsqu'il est exécuté. Les scripts CGI, cependant, ne sont affichés que comme du code et ne sont pas exécutés.
Voici le tout script serveur, qui lance également le navigateur par défaut:
#!/usr/bin/env python
import webbrowser
import BaseHTTPServer
import CGIHTTPServer
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8008)
handler.cgi_directories = ["/cgi"]
httpd = server(server_address, handler)
webbrowser.open_new("http://localhost:8008/cgi/script.py");
httpd.serve_forever()
Cependant, ce script.py est simplement affichée et non exécutés. Je ne peux pas comprendre pourquoi, et j'ai essayé quelques versions différentes dans handler.cgi_directories, juste au cas où ...
Vous démarrez le navigateur avant de lancer le serveur – stark
Hehe, non, ce n'est pas la réponse, mais merci. Ce script fonctionne lorsqu'il est appelé par Python - le navigateur met du temps à s'initialiser, donc httpd est déjà utilisé. Si je démarre le navigateur après «servir pour toujours», cette ligne n'est jamais appelée. Quoi qu'il en soit, une fois que le serveur est opérationnel, je peux ouvrir une fenêtre de navigateur manuellement et naviguer jusqu'à cette adresse, avec les mêmes résultats: Je vois le code CGI, il n'est pas en cours d'exécution. – Notnasiul
exécutez tcpdump sur l'interface de lo et voir les demandes et les réponses. – stark