Django 1.7 auf App Engine "ImportError: Kein Modul namens msvcrt"

Ich versuche, Django auf Version 1.7 auf einem Google App Engine-Entwicklungsserver auf meinem Windows-Rechner zu aktualisieren.

Beim Versuch, die App zu laden, bekomme ich die folgende Ausnahme von doango\core\files\locks.py :

  • Django-Modell Formular speichern (Multi-Datenbank) Frage
  • Wie ändere ich sys.path von .htaccess, um mod_python zu erlauben, Django zu sehen?
  • Python-MySQLdb Problem: falsche ELF Klasse: ELFCLASS32
  • Javascript-Benachrichtigung in Django
  • Kann "list_display" in einem Django ModelAdmin Display Attribute von ForeignKey Felder?
  • Python Attribut Fehler beim Ausführen von Skript: type object 'BaseCommand' hat kein Attribut 'option_list'
  •  ImportError: No module named msvcrt 

    Die entsprechenden Codezeilen sind:

     if os.name == 'nt': import msvcrt 

    Ich denke, die Ausnahme wird aufgeworfen, weil App-Engine-Dev-Server keine Version von msvcrt liefert, aber weil meine Dev-Maschine ist Windows, os.name ist immer noch 'nt' .

    Gibt es eine Lösung oder einen Workaround dafür?

    Relevante Stacktrace:

      File "...\django\core\files\locks.py", line 30, in <module> import msvcrt File "D:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\python\sandbox.py", line 852, in load_module raise ImportError('No module named %s' % fullname) 

    3 Solutions collect form web for “Django 1.7 auf App Engine "ImportError: Kein Modul namens msvcrt"”

    Ich habe nur einen Workaround gefunden. In appengine_config.py fügen Sie die folgenden Zeilen hinzu:

     import os on_appengine = os.environ.get('SERVER_SOFTWARE','').startswith('Development') if on_appengine and os.name == 'nt': os.name = None 

    Ich bin immer noch auf der Suche nach einer weniger hackigen Lösung.

    Ich habe dieses Problem bei der Verwendung von PyCharm gefunden . Ich habe ein neues Python-GAE-Projekt erstellt und darauf hingewiesen, dass ich Flask einschließen wollte. Ich habe ein paar kleine Probleme beim Aufstehen und Laufen und das war die letzte: Wie @Tzach darauf hingewiesen, werden Sie schließlich in ein ImportError: No module named msvcrt beim Ausführen einer dieser GAE / Flask / JetBrains Kesselplatten . Tzachs Hack aber hat nicht für mich gearbeitet – sie müssen die Click-Bibliothek geändert haben, um das Host-Betriebssystem anders zu erkennen. Die Lösung für mich ist der folgende Code in appengine_config.py :

     on_appengine = os.environ.get('SERVER_SOFTWARE','').startswith('Development') if on_appengine and os.name == 'nt': sys.platform = "Not Windows" 

    Der Grund, den es geändert hat, ist, weil es scheint, dass Click jetzt den folgenden Code verwendet, um das Betriebssystem zu erkennen:

     WIN = sys.platform.startswith('win') 

    Hoffe das ist hilfreich!

    Devserver bietet keinen Zugriff auf Module, die sich auf Ihrem System befinden. Es sieht nur Module an, die in deinem Projekt sind. Dies ist, um sicherzustellen, dass, wenn es auf devserver läuft, wird es ausgeführt, wenn eingesetzt. Entweder benutze die gepatchte Version von Django auf deinem devserver und verstehe, dass das Betriebssystem niemals auf App Engine sein wird oder msvcrt in dein Projekt importiere, also kann es gefunden werden und eine skip_files Zeile in app.yaml setzen, wenn du dich einsetzest Es wird niemals benötigt, wenn sie in der Nicht-Windows-Umgebung von App Engine eingesetzt wird.

    Python ist die beste Programmiersprache der Welt.