如何解决无法导入名称页面(django / wagtail)

时间:2017-03-28 16:46:30

标签: python django wagtail

最近,我一直在尝试使用我现有的Django应用程序。我遇到了一个错误: -

ImportError: No module named wagtail
unable to load app 0 (mountpoint='') (callable not found or import error)

经过多次故障排除后,我设法通过复制文件夹wagtail来解决这个问题:

/usr/local/lib/python2.7/dist-packages/

进入这里

/opt/django/src/

解决了这个错误,我收到了另一个关于另一个模块的信息,另一个...我每次将文件夹从/usr/local/lib/python2.7/dist-packages/复制到/opt/django/src/,最终解决了我遇到的问题和uWSGI开始。

现在,当我访问应用的主页时,收到此错误

ImportError at /

cannot import name pages

    Request Method:     GET
Request URL:    http://example.com
Django Version:     1.9
Exception Type:     ImportError
Exception Value:    

cannot import name pages

Exception Location:     ./wagtail/wagtailadmin/urls/__init__.py in <module>, line 4
Python Executable:  /usr/local/bin/uwsgi
Python Version:     2.7.3
Python Path:    

['.',
 '',
 '/opt/django/src',
 '/root/.python',
 '/opt/django/env/lib/python2.7',
 '/opt/django/env/lib/python2.7/plat-linux2',
 '/opt/django/env/lib/python2.7/lib-tk',
 '/opt/django/env/lib/python2.7/lib-old',
 '/opt/django/env/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2',
 '/usr/lib/python2.7/lib-tk',
 '/opt/django/env/local/lib/python2.7/site-packages',
 '/opt/django/env/lib/python2.7/site-packages']

我已检查引用的文件(./wagtail/wagtailadmin/urls/__init__.py),它看起来像这样:

from django.conf.urls import url, include
from django.views.decorators.cache import cache_control

from wagtail.wagtailadmin.urls import pages as wagtailadmin_pages_urls
from wagtail.wagtailadmin.urls import collections as wagtailadmin_collections_urls
from wagtail.wagtailadmin.urls import password_reset as wagtailadmin_password_reset_urls
from wagtail.wagtailadmin.views import account, chooser, home, pages, tags, userbar
from wagtail.wagtailadmin.api import urls as api_urls
from wagtail.wagtailcore import hooks
from wagtail.utils.urlpatterns import decorate_urlpatterns
from wagtail.wagtailadmin.decorators import require_admin_access

违规行是&#39;来自&#39; ...

  

来自wagtail.wagtailadmin.urls导入页面为wagtailadmin_pages_urls

如何解决此错误?

2 个答案:

答案 0 :(得分:4)

我在wagtail设置上运行了一些测试。我在一个全新的Ubuntu 14安装中进行了每项测试(每个测试都在Cloud9 IDE的新工作区中进行。)

测试1:Straight python 2.7

sudo pip install wagtail
ERRO: error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

评论:输出了大量x86_64-linux-gnu-gcc: error: build/temp.linux-x86_64-2.7/libImaging/codec_fd.o: No such file or directory个错误。 没用。

测试2 - 使用virtualenv的Python 2.7

sudo pip install virtualenv
virtualenv env 
source env/bin/activate

现在来自他们的github https://github.com/wagtail/wagtail

pip install wagtail 
out: Successfully installed Django-1.10.7 Pillow-4.1.1 Unidecode-0.4.20 Willow-0.4 beautifulsoup4-4.5.3 django-modelcluster-3.1 django-taggit-0.22.1 django-treebeard-4.1.0 djangorestframework-3.6.2 html5lib-0.999999999 olefile-0.44 pytz-2017.2 requests-2.13.0 wagtail-1.9.1 webencodings-0.5.1
wagtail start mysite
cd mysite
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

我必须编辑设置/ dev.py并包含ALLOWED_HOSTS = ['*'],因为我在云端9上。还需要在运行服务器之后使用$ IP:$ PORT。工作!

Test3 - 使用virtualenv的Python 3.4

sudo pip3 install virtualenv
virtualenv -p python3 env
source env/bin/activate
pip install wagtail
Successfully installed Django-1.10.7 Pillow-4.1.1 Unidecode-0.4.20 Willow-0.4 beautifulsoup4-4.5.3 django-modelcluster-3.1 django-taggit-0.22.1 django-treebeard-4.1.0 djangorestframework-3.6.2 html5lib-0.999999999 olefile-0.44 pytz-2017.2 requests-2.13.0 wagtail-1.9.1 webencodings-0.5.1

其余命令是相同的。它工作了!

测试4 - Python 3.4没有virtualenv

sudo pip3 install wagtail
out: Successfully installed wagtail django-taggit requests Unidecode Django djangorestframework Pillow beautifulsoup4 Willow django-modelcluster django-treebeard olefile pytz
wagtail start mysite
python3 manage.py migrate
python3 manage.py createsuperuser
python3 manage.py runserver
编辑:犯了一个错误。在这种情况下应该运行python3,而不是python。它再次成功了吗?

结论:看起来你需要一个virtualenv才能在Ubuntu 14和python2上运行。使用python3它可以使用和不使用virtualenv。我无法重现你的错误,但想法是一样的:它不起作用,因为它在错误的地方寻找东西。

评论:你提到的两件事我无法测试:

  

我一直在努力与现有的Django合作   应用

有了大量的重依赖,(Pillow,Django休息,beatifullsoup和其他我从未听说过的)如果它开箱即用,之前的设置会很奇怪。我的意思是,Django是wagtail的依赖。所以我会尝试相反的方式。从wigtail开始新鲜并在那里移植你的代码(为了社区而使用python3;))。此手册的文件副本就像程序员最糟糕的噩梦(至少对我来说)。这看起来像版本问题。尝试发布所涉及的所有内容的版本,以及重现问题的确切步骤。我的意思是,你是否在django运行的操作系统中安装了wagtail?

  

我正在和uWSGI开始。

所以你已经部署了你的应用程序?这使事情复杂化。如果版本和virtualenv无法解决您的问题,社区需要设置部署的详细信息。你还没有提到你的操作系统。

我希望这有帮助!祝你好运!

答案 1 :(得分:1)

我遇到了

  

无法导入名称页

错误:

  

来自wagtail.wagtailadmin.urls导入页面为wagtailadmin_pages_urls

尝试将一个wagtail应用程序部署到Google App Engine时无法在我的本地开发服务器上复制该问题。

我在GAE中间歇性地看到的看似无关的错误涉及PIL库中的导入错误。我能够通过删除我/ lib目录中我的销售包中的PIL和枕头相关文件夹来解决两个错误。由于平台特定的二进制文件,我不得不通过app.yaml文件导入PIL,但运行pip install -t lib / -r requirements-vendor.txt也导致PIL安装到lib文件夹中(作为依赖关系)鸰)