Django TemplateSyntaxError:呈现时捕获到ImportError:无法导入名称utils
我很难在CentOS 6/Apache/2.2.15上运行此django应用程序。当我运行应用程序时,出现以下错误: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
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