Tzach Tzach - 10 days ago 7
Python Question

Django 1.7 on App Engine "ImportError: No module named msvcrt"

I'm trying to upgrade Django to version 1.7 on a Google App Engine development server running on my Windows machine.

When trying to load the app, I get the following exception from

doango\core\files\locks.py
:

ImportError: No module named msvcrt


The relevant code lines are:

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


I guess the exception is raised because App Engine's dev server doesn't supply a version of msvcrt, but because my dev machine is Windows, os.name is still
'nt'
.

Is there a solution or a workaround for this?

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

Answer

Just found a workaround. In appengine_config.py add the following lines:

import os

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

I'm still looking for a less hackish solution.