3

I'm new to Django. I installed Django using easy_install (on a Mac) and PyDev Django plugin for eclipse. I followed standard procedures to create a new PyDev Django project. When I try to run the project as PyDev: Django, I get the following error.

Validating models...

RuntimeError: maximum recursion depth exceeded

I also tried adding the following line in manage.py, but it's of no use.

sys.setrecursionlimit(2000)

Here's the partial stacktrace.

Unhandled exception in thread started by <bound method Command.inner_run of    <django.contrib.staticfiles.management.commands.runserver.Command object at 0x10e2*****>>
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/core/management/commands/runserver.py", line 92, in inner_run
self.validate(display_num_errors=True)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/core/management/base.py", line 280, in validate
num_errors = get_validation_errors(s, app)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/core/management/validation.py", line 35, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/loading.py", line 166, in get_app_errors
self._populate()
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/loading.py", line 72, in _populate
self.load_app(app_name, True)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/loading.py", line 96, in load_app
models = import_module('.models', app_name)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/contrib/auth/models.py", line 370, in <module>
class AbstractUser(AbstractBaseUser, PermissionsMixin):
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/base.py", line 213, in __new__
new_class.add_to_class(field.name, copy.deepcopy(field))
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/base.py", line 265, in add_to_class
value.contribute_to_class(cls, name)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/fields/__init__.py", line 257, in contribute_to_class
cls._meta.add_field(self)
File "/Library/Python/2.7/site-packages/Django-1.5-py2.7.egg/django/db/models/options.py", line 179, in add_field
self.local_fields.insert(bisect(self.local_fields, field), field)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/functools.py", line 56, in <lambda>
'__lt__': [('__gt__', lambda self, other: other < self),
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/functools.py", line 56, in <lambda>
'__lt__': [('__gt__', lambda self, other: other < self),
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/functools.py", line 56, in <lambda>
'__lt__': [('__gt__', lambda self, other: other < self),
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/functools.py", line 56, in <lambda>
'__lt__': [('__gt__', lambda self, other: other < self),

What am I doing wrong?

Ashwin
  • 873
  • 2
  • 12
  • 21
  • Are you sure your models aren't referencing each other or something strange? – GordonsBeard Mar 06 '13 at 00:08
  • It's just an empty project and has the same structure and content as specified in the official website for Django. – Ashwin Mar 06 '13 at 00:21
  • Could you please post the stack trace? – andrefsp Mar 06 '13 at 00:53
  • @andrefsp I just updated my question with the stacktrace. – Ashwin Mar 06 '13 at 01:01
  • @Ashwin It really looks like a problem in your models. I believe you are using Django custom user model. Right? The traceback doesn't say much but I would try to look around auth models imports. You might have referencing some custom auth model and importing it somewhere again. – andrefsp Mar 06 '13 at 01:11
  • Perhaps you could put that recursion inside settings not in the manage.py – catherine Mar 06 '13 at 03:22
  • Dupe of http://stackoverflow.com/questions/16259729/django-python-manage-py-runserver-gives-runtimeerror-maximum-recursion-depth-e – user9876 Sep 18 '13 at 17:09

3 Answers3

23

The problem is in functools.py file. This file is from Python.

To fix the problem replace this (about line 56 in python\Lib\fuctools.py):

    convert = {
    '__lt__': [('__gt__', lambda self, other: other < self),
               ('__le__', lambda self, other: not other < self),
               ('__ge__', lambda self, other: not self < other)],
    '__le__': [('__ge__', lambda self, other: other <= self),
               ('__lt__', lambda self, other: not other <= self),
               ('__gt__', lambda self, other: not self <= other)],
    '__gt__': [('__lt__', lambda self, other: other > self),
               ('__ge__', lambda self, other: not other > self),
               ('__le__', lambda self, other: not self > other)],
    '__ge__': [('__le__', lambda self, other: other >= self),
               ('__gt__', lambda self, other: not other >= self),
               ('__lt__', lambda self, other: not self >= other)]
}

to that:

    convert = {
    '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)),
               ('__le__', lambda self, other: self < other or self == other),
               ('__ge__', lambda self, other: not self < other)],
    '__le__': [('__ge__', lambda self, other: not self <= other or self == other),
               ('__lt__', lambda self, other: self <= other and not self == other),
               ('__gt__', lambda self, other: not self <= other)],
    '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)),
               ('__ge__', lambda self, other: self > other or self == other),
               ('__le__', lambda self, other: not self > other)],
    '__ge__': [('__le__', lambda self, other: (not self >= other) or self == other),
               ('__gt__', lambda self, other: self >= other and not self == other),
               ('__lt__', lambda self, other: not self >= other)]
}

Read also: http://regebro.wordpress.com/2010/12/13/python-implementing-rich-comparison-the-correct-way/

tstempko
  • 1,176
  • 1
  • 15
  • 17
0

I removed PyDev, Django and Python and re-installed all of them, and now it works. Thanks!

Ashwin
  • 873
  • 2
  • 12
  • 21
0

I've run into this a couple times while using pyenv virtualenvs with python 2.7.1. I didn't want to edit core files so I upgraded to 2.7.5 and it worked flawlessly. Hopefully this is an option for some of you.

Jerad
  • 594
  • 7
  • 15