Reputation:
I'am using Vagrant for virtualization, everything worked fine until today, when my friend cloned a repo which worked fine on my computer he started to getting cannot import name pages
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8017/
Django Version: 1.8.14
Python Version: 2.7.6
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.humanize',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.sitemaps',
'django.contrib.staticfiles',
'compressor',
'django_common',
'djrill',
'taggit',
'modelcluster',
'wagtail.wagtailcore',
'wagtail.wagtailadmin',
'wagtail.wagtaildocs',
'wagtail.wagtailsnippets',
'wagtail.wagtailusers',
'wagtail.wagtailimages',
'wagtail.wagtailembeds',
'wagtail.wagtailsearch',
'wagtail.wagtailredirects',
'wagtail.wagtailforms',
'wagtail.wagtailsites',
'wagtail.contrib.wagtailsitemaps',
'wagtail.contrib.wagtailfrontendcache',
'django.contrib.gis',
'froala_editor',
'dal',
'dal_select2',
'home',
'accounts',
'ads',
'staff',
'common',
'search',
'blog',
'article',
'center',
'slideshow',
'legacy',
'django_quiz',
'django_quiz.essay',
'django_quiz.quiz',
'django_quiz.multichoice',
'django_quiz.true_false',
'polls',
'wagtailoverrides',
'rate_system',
'dovescore_system',
'social_django',
'django_extensions',
'wagtail.contrib.wagtailstyleguide']
Installed Middleware:
['django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'social_django.middleware.SocialAuthExceptionMiddleware',
'wagtail.wagtailcore.middleware.SiteMiddleware',
'wagtail.wagtailredirects.middleware.RedirectMiddleware']
Traceback:
File "/home/vagrant/webapps/dovemed/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
119. resolver_match = resolver.resolve(request.path_info)
File "/home/vagrant/webapps/dovemed/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
365. for pattern in self.url_patterns:
File "/home/vagrant/webapps/dovemed/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
401. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/vagrant/webapps/dovemed/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
395. self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.7/importlib/__init__.py" in import_module
37. __import__(name)
File "/vagrant/dovemed/dovemed/urls.py" in <module>
14. from wagtail.wagtailadmin import urls as wagtailadmin_urls
File "/home/vagrant/webapps/dovemed/local/lib/python2.7/site-packages/wagtail/wagtailadmin/urls/__init__.py" in <module>
4. from wagtail.wagtailadmin.urls import pages as wagtailadmin_pages_urls
Exception Type: ImportError at /
Exception Value: cannot import name pages
I'm using wagtail 1.8 and django 1.8.14
Upvotes: 0
Views: 597
Reputation: 25227
I believe you can fix this by adding:
djangorestframework>=3.1.3,<3.7
to your requirements.txt (and then re-running pip install -r requirements.txt
).
It looks like the root cause of the error is:
/home/vagrant/webapps/dovemed/local/lib/python2.7/site-packages/rest_framework/serializers.py in <module>()
AttributeError: 'module' object has no attribute 'JSONField'
This occurs because django-rest-framework 3.7 (released on 2017-10-06) dropped support for Django 1.8/1.9, and now relies on Django 1.10 features such as JSONField
. Ideally Wagtail should have pinned django-rest-framework to <3.7 to prevent an incompatible version being installed, but Wagtail versions up to 1.12 don't do this - so it's necessary to specify this in your requirements.txt instead.
Upvotes: 1