Django TemplateSyntaxError:呈现时捕获到ImportError:无法导入名称utils

Django TemplateSyntaxError:呈现时捕获到ImportError:无法导入名称utils,django,apache,postgresql,centos,wsgi,Django,Apache,Postgresql,Centos,Wsgi,我很难在CentOS 6/Apache/2.2.15上运行此django应用程序。当我运行应用程序时,出现以下错误: Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__ response = self.get_response(request) File "/u

我很难在CentOS 6/Apache/2.2.15上运行此django应用程序。当我运行应用程序时,出现以下错误:

 Traceback (most recent call last):
   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
     response = self.get_response(request)
   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response
     response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
   File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
     return debug.technical_500_response(request, *exc_info)
   File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 59, in technical_500_response
     html = reporter.get_traceback_html()
   File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 151, in get_traceback_html
     return t.render(c)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 123, in render
     return self._render(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render
     return self.nodelist.render(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
     bits.append(self.render_node(node, context))
   File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 73, in render_node
     result = node.render(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 90, in render
     output = self.filter_expression.resolve(context)
   File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 536, in resolve
     new_obj = func(obj, *arg_vals)
   File "/usr/local/lib/python2.7/site-packages/django/template/defaultfilters.py", line 695, in date
     return format(value, arg)
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 285, in format
     return df.format(format_string)
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format
     pieces.append(force_unicode(getattr(self, piece)()))
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 191, in r
     return self.format('D, j M Y H:i:s O')
   File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format
     pieces.append(force_unicode(getattr(self, piece)()))
   File "/usr/local/lib/python2.7/site-packages/django/utils/encoding.py", line 71, in force_unicode
     s = unicode(s)
   File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 206, in __unicode_cast
     return self.__func(*self.__args, **self.__kw)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 81, in ugettext
     return _trans.ugettext(message)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 286, in ugettext
     return do_translate(message, 'ugettext')
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in do_translate
     _default = translation(settings.LANGUAGE_CODE)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 185, in translation
     default_translation = _fetch(settings.LANGUAGE_CODE)
   File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 162, in _fetch
     app = import_module(appname)
   File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
     __import__(name)
   File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 3, in <module>
     from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
   File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/helpers.py", line 3, in <module>
     from django.contrib.admin.util import (flatten_fieldsets, lookup_field,
   File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/util.py", line 1, in <module>
     from django.db import models
   File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 78, in <module>
     connection = connections[DEFAULT_DB_ALIAS]
   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
     backend = load_backend(db['ENGINE'])
   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 33, in load_backend
     return import_module('.base', backend_name)
   File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
     __import__(name)
   File "/usr/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 9, in <module>
     from django.db import utils
 TemplateSyntaxError: Caught ImportError while rendering: cannot import name utils

提前感谢您的帮助。

过去出现这种情况的原因之一是模块导入路径问题

具体地说,使用针对一个Python版本编译的mod_wsgi安装,然后使用WSGIPythonPath或其他设置Python路径的方法来引用使用不同Python版本构建的Python虚拟环境

因此,请验证编译和安装Python mod_wsgi的版本。如果这不是Python2.7,而是一个较旧的Python版本,那么您可能会遇到这个特定的问题

有关如何检查所编译的mod_wsgi的用途:

在查看mod_wsgi的编译目的时,还值得检查Python的补丁级别修订差异。我记得在Python2.7.1和2.7.2之间有一个类似的问题


如果您的Python站点包位于/usr/local下,那么很可能是mod_wsgi在/usr下使用了不同的版本。

以防有人在搜索Pyramid和sqlalchemy时遇到此问题:

与Pyramid一起出现了相同的错误(“ImportError:无法导入名称util”)。经过数小时的反复试验,唯一的原因是我在production.ini中设置了:

[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 80
我还在端口80上使用Apache2,这应该是相同的,这似乎很奇怪。将端口更改为例如6543后,错误消失,WSGI服务器正常工作。如有必要,无apache2设置(WSGIPythonHome、WSGIPythonPath)


显然不相关,我不知道端口冲突为什么会导致此错误,但它可能会帮助其他人解决此问题。

只需检查psycopg2,即可导入。问题依然存在。
sys.path.append('/usr/local/lib/python2.7/site packages/django')
的原因是什么?如果您想在
sys.path
中添加
django
,您应该添加django所在的根文件夹(即
sys.path.append('/usr/local/lib/python2.7/site packages')
),谢谢您的建议,我会修复它。事实上,我只需要去掉它,因为网站包已经在PythonPath中了。我必须通过将我的django应用程序路径添加到PYTHON中的PYTHON_路径来解决这个问题。bash_profile我的mod_wsgi是用PYTHON django使用的相同版本编译的。我想没问题。非常感谢你的帮助!它是PYTHONPATH,而不是PYTON_路径,Apache甚至不应该使用它。使用在mod_wsgi.so上运行ldd的结果修改您的问题,确保您有未设置的LD_LIBRARY_路径,以便我们验证它是否正确。还要指出是否有用于系统范围Python安装的/usr/bin/python2.7。因为在非标准位置有第二个Python2.7,除非您将WSGIPythonHome设置为使用它,否则它仍将使用系统Python2.7(如果存在)。因此,请补充问题,询问您的结果,以便确认。
    import os, sys

    sys.path.append('/var/www/www.domain.com/django')
    sys.path.append('/var/www/www.domain.com/django/sistema')

    sys.path.append('/usr/local/lib/python2.7/site-packages/django')


    root = os.path.join(os.path.dirname(__file__), '..')
    sys.path.insert(0, root)

    os.path.dirname(__file__)
    sys.path.insert(0, root)

    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

    os.environ["ORACLE_HOME"] = "/ora00/app/oracle/product/client"

    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 80