views:

755

answers:

3

I'm trying to get Django running on GAE using this tutorial.

When I run python manage.py runserver I get the stacktrace below. I'm new to both django and python so I don't know what my next steps are (This is Ubuntu Jaunty btw). It seems django isn't finding the GAE module ipaddr which comes with SDK 1.3.1.

How do I get django to find this module?

/home/username/bin/google_appengine/google/appengine/api/datastore_file_stub.py:40: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5

/home/username/bin/google_appengine/google/appengine/api/memcache/__init__.py:31: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
  import sha
Traceback (most recent call last):
  File "manage.py", line 18, in <module>
    InstallAppengineHelperForDjango()
  File "/home/username/Development/GAE/myapp/appengine_django/__init__.py", line 543, in InstallAppengineHelperForDjango
    InstallDjangoModuleReplacements()
  File "/home/username/Development/GAE/myapp/appengine_django/__init__.py", line 260, in InstallDjangoModuleReplacements
    import django.db
  File "/home/username/Development/GAE/myapp/django/db/__init__.py", line 57, in <module>
    'TIME_ZONE': settings.TIME_ZONE,
  File "/home/username/Development/GAE/myapp/appengine_django/db/base.py", line 117, in __init__
    self._setup_stubs()
  File "/home/username/Development/GAE/myapp/appengine_django/db/base.py", line 128, in _setup_stubs
    from google.appengine.tools import dev_appserver_main
  File "/home/username/bin/google_appengine/google/appengine/tools/dev_appserver_main.py", line 82, in <module>
    from google.appengine.tools import appcfg
  File "/home/username/bin/google_appengine/google/appengine/tools/appcfg.py", line 53, in <module>
    from google.appengine.api import dosinfo
  File "/home/username/bin/google_appengine/google/appengine/api/dosinfo.py", line 25, in <module>
    import ipaddr
ImportError: No module named ipaddr
+3  A: 

It happens also with app-engine-patch

The solution is to add $GOOGLE_APP_ENGINE/lib/ipaddr to your pythonpath, as you must have done with other dependencies like antlr3 or yaml.

Iker Jimenez
+6  A: 

http://code.google.com/p/ipaddr-py/ To install.

Information about issue: http://code.google.com/p/google-app-engine-django/issues/detail?id=161#c3

From google:

> Hi, just apply this patch from: http://code.google.com/p/google-app-engine-
django/source/detail?r=102

-------

Log message

Adds new dependency, ipaddr, from SDK
Affected files     expand all   collapse all
    Modify  /trunk/appengine_django/__init__.py diff
...         
129 129             SDK_PATH,
130 130             os.path.join(SDK_PATH, 'lib', 'antlr3'),
131 131             os.path.join(SDK_PATH, 'lib', 'django'),
132 +           os.path.join(SDK_PATH, 'lib', 'ipaddr'),
132 133             os.path.join(SDK_PATH, 'lib', 'webob'),
133 134             os.path.join(SDK_PATH, 'lib', 'yaml', 'lib'),
134 135         ]
TheJacobTaylor
Installation of ipaddr is not required (as Iker mentions) it is already in the path. Updating __init__.py as copied from Google solution should be enough to include it in the path automatically.
TheJacobTaylor
Version 102 of the GAE SDK includes this fix.
TheJacobTaylor
A: 

I had the same problem following the tutorial here: http://code.google.com/appengine/articles/appengine_helper_for_django.html

I agree that you need to add ipaddr to your module path. I did this by creating a text file in my D:\Python26\Lib\site-packages directory called ipaddr.pth and it contains a single line:

D:\Program Files\Google\google_appengine\lib\ipaddr

Which is the path to that module.

Another thing to note is you don't need to install Python for Windows as suggested, as it doesn't automatically pick up the appengine SDK (or at least it didn't seem to do so for me). Mind you, I have D:\Program Files\Google\google_appengine\ on my system PATH variable, but I'm not sure if that helps (this is so I can run the helper scripts in there from the cli).

Youdaman