【问题标题】:ImportError while rendering: No module named app渲染时出现 ImportError:没有名为 app 的模块
【发布时间】:2013-01-14 16:49:51
【问题描述】:

我在 pythonanywhere 上运行一个 twitter 应用程序,该应用程序在 localhost 开发服务器上运行良好,但是当我在 pythonanywhere 上运行它时,我收到了这个错误:

2013-01-30 20:04:12,843 :Traceback (most recent call last):
2013-01-30 20:04:12,843 :  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
2013-01-30 20:04:12,843 :    response = self.get_response(request)
2013-01-30 20:04:12,844 :  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response
2013-01-30 20:04:12,844 :    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
2013-01-30 20:04:12,844 :  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
2013-01-30 20:04:12,844 :    return debug.technical_500_response(request, *exc_info)
2013-01-30 20:04:12,844 :  File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 59, in technical_500_response
2013-01-30 20:04:12,845 :    html = reporter.get_traceback_html()
2013-01-30 20:04:12,845 :  File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 151, in get_traceback_html
2013-01-30 20:04:12,845 :    return t.render(c)
2013-01-30 20:04:12,845 :  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 123, in render
2013-01-30 20:04:12,845 :    return self._render(context)
2013-01-30 20:04:12,845 :  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render
2013-01-30 20:04:12,845 :    return self.nodelist.render(context)
2013-01-30 20:04:12,845 :  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
2013-01-30 20:04:12,846 :    bits.append(self.render_node(node, context))
2013-01-30 20:04:12,846 :  File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 73, in render_node
2013-01-30 20:04:12,846 :    result = node.render(context)
2013-01-30 20:04:12,846 :  File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 90, in render
2013-01-30 20:04:12,846 :    output = self.filter_expression.resolve(context)
2013-01-30 20:04:12,846 :  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 536, in resolve
2013-01-30 20:04:12,847 :    new_obj = func(obj, *arg_vals)
2013-01-30 20:04:12,847 :  File "/usr/local/lib/python2.7/site-packages/django/template/defaultfilters.py", line 695, in date
2013-01-30 20:04:12,847 :    return format(value, arg)
2013-01-30 20:04:12,847 :  File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 285, in format
2013-01-30 20:04:12,847 :    return df.format(format_string)
2013-01-30 20:04:12,847 :  File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format
2013-01-30 20:04:12,847 :    pieces.append(force_unicode(getattr(self, piece)()))
2013-01-30 20:04:12,848 :  File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 191, in r
2013-01-30 20:04:12,848 :    return self.format('D, j M Y H:i:s O')
2013-01-30 20:04:12,848 :  File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format
2013-01-30 20:04:12,848 :    pieces.append(force_unicode(getattr(self, piece)()))
2013-01-30 20:04:12,848 :  File "/usr/local/lib/python2.7/site-packages/django/utils/encoding.py", line 71, in force_unicode
2013-01-30 20:04:12,848 :    s = unicode(s)
2013-01-30 20:04:12,848 :  File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 206, in __unicode_cast
2013-01-30 20:04:12,848 :    return self.__func(*self.__args, **self.__kw)
2013-01-30 20:04:12,849 :  File "/usr/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 81, in ugettext
2013-01-30 20:04:12,849 :    return _trans.ugettext(message)
2013-01-30 20:04:12,849 :  File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 286, in ugettext
2013-01-30 20:04:12,849 :    return do_translate(message, 'ugettext')
2013-01-30 20:04:12,849 :  File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in do_translate
2013-01-30 20:04:12,849 :    _default = translation(settings.LANGUAGE_CODE)
2013-01-30 20:04:12,849 :  File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 185, in translation
2013-01-30 20:04:12,850 :    default_translation = _fetch(settings.LANGUAGE_CODE)
2013-01-30 20:04:12,850 :  File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 162, in _fetch
2013-01-30 20:04:12,850 :    app = import_module(appname)
2013-01-30 20:04:12,850 :  File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
2013-01-30 20:04:12,850 :    __import__(name)
2013-01-30 20:04:12,850 :django.template.base.TemplateSyntaxError: Caught ImportError while rendering: No module named twitterApp

什么可能导致此错误?我应该去哪里看?

【问题讨论】:

  • pythonanywhere 不包括 twitterApp?
  • 你能发布你的settings.pyviews.py吗?

标签: python django pythonanywhere


【解决方案1】:

如果可能是由 pythonanywhere 中的 wsgi.py 配置问题引起的,在本地环境中,django 可以很好地处理 python 路径和静态文件。 根据这个part在pythonanywhere部署文档:

  1. 在wsgi.py中为sys.path添加正确的路径
假设您的 Django 设置文件位于 /home/my_username/projects/my_project/settings.py'
path = '/home/my_username/projects'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_project.settings'
from my_project.myapp.models import Kitchen, Sink

请注意:my_project 前缀是必需的。

2.static 文件应该处理得很好

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

根据文档检查这两点应该解决这个问题

【讨论】:

  • 在 wsgi.py 中:project_home = '/home/iahvector/twitterWebApp/',settings.py 路径:/home/iahvector/twitterWebApp/TwitterWebApp/settings.py,twitterApp 模块路径:/home/ iahvector/twitterWebApp/TwitterWebApp/twitterApp/,我还没有静态文件。
  • 您的 wsgi 文件中的路径变量是否指向 /home/iahvector/twitterWebApp/TwitterWebApp?
  • @Glenn 路径变量是我之前评论中提到的“project_home”变量。
  • 将“twitterApp”或其任何组件的每次导入/使用切换为“TwitterWebApp.twitterApp”停止了未处理的异常。它现在给出了“[Errno 111] Connection denied”,但我相信这是一个不同的错误。 @Michael 我将您的答案标记为正确的答案,以便将我指向文档并指出“my_project.myapp”部分。
【解决方案2】:

我的应用遇到了完全相同的问题...问题原来是文件权限。如果app目录没有执行权限,则导入失败。

【讨论】:

    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 2015-07-20
    • 2014-05-07
    • 2013-05-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多