我正在尝试根据他们的文档安装dajax
/ dajaxice
,这表明我在settings.py
中取消注释eggs模板加载器(下面的元组中的第三个)。
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'django.template.loaders.eggs.Loader',
)
但是,这会使我的站点停止在开发机上使用“ /:sys.stdin访问受mod_wsgi限制的IOError”来工作。当我查看错误发生的位置时,错误发生在未连接到该项目的python鸡蛋中(我没有使用virtualenv可能会提供帮助)(甚至是django),并且在再次注释该行时消失了。 (当注释掉鸡蛋装载器时,可以在
TEMPLATES_DIR
中轻松找到其寻找的模板)。追溯为:
Environment:
Request Method: GET
Request URL: http://[redacted URL]/
Django Version: 1.2.5
Python Version: 2.6.5
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'django.contrib.admindocs',
'debug_toolbar',
'registration',
'dajaxice',
'dajax',
'south',
'[redacted app name].study_registration',
'profiles']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'audit_log.middleware.UserLoggingMiddleware')
Traceback:
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/core/handlers/base.py" in get_response
100. response = callback(request, *callback_args, **callback_kwargs)
File "/home/[redacted user name]/django/[redacted app name]/study_registration/views.py" in menu
671. template = loader.get_template('study_registration/menu.html')
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/template/loader.py" in get_template
157. template, origin = find_template(template_name)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/template/loader.py" in find_template
128. loader = find_template_loader(loader_name)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/template/loader.py" in find_template_loader
95. mod = import_module(module)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/utils/importlib.py" in import_module
35. __import__(name)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/template/loaders/eggs.py" in <module>
4. from pkg_resources import resource_string
File "/usr/lib/python2.6/dist-packages/pkg_resources.py" in <module>
2675. add_activation_listener(lambda dist: dist.activate())
File "/usr/lib/python2.6/dist-packages/pkg_resources.py" in subscribe
662. callback(dist)
File "/usr/lib/python2.6/dist-packages/pkg_resources.py" in <lambda>
2675. add_activation_listener(lambda dist: dist.activate())
File "/usr/lib/python2.6/dist-packages/pkg_resources.py" in activate
2180. map(declare_namespace, self._get_metadata('namespace_packages.txt'))
File "/usr/lib/python2.6/dist-packages/pkg_resources.py" in declare_namespace
1784. _handle_ns(packageName, path_item)
File "/usr/lib/python2.6/dist-packages/pkg_resources.py" in _handle_ns
1755. loader.load_module(packageName); module.__path__ = path
File "/usr/lib/python2.6/pkgutil.py" in load_module
238. mod = imp.load_module(fullname, self.file, self.filename, self.etc)
File "/usr/local/lib/python2.6/dist-packages/glumpy-0.1.0-py2.6.egg/glumpy/__init__.py" in <module>
15. from window import Window, active_window
File "/usr/local/lib/python2.6/dist-packages/glumpy-0.1.0-py2.6.egg/glumpy/window.py" in <module>
16. import IPython
File "/usr/lib/pymodules/python2.6/IPython/__init__.py" in <module>
58. __import__(name,glob,loc,[])
File "/usr/lib/pymodules/python2.6/IPython/ipstruct.py" in <module>
17. from IPython.genutils import list2dict2
File "/usr/lib/pymodules/python2.6/IPython/genutils.py" in <module>
49. from IPython.Itpl import Itpl,itpl,printpl
File "/usr/lib/pymodules/python2.6/IPython/Itpl.py" in <module>
99. itpl_encoding = sys.stdin.encoding or 'ascii'
Exception Type: IOError at /
Exception Value: sys.stdin access restricted by mod_wsgi
我的问题是仍然有启用鸡蛋模板加载器的功能,但只能检查
INSTALLED_APPS
的鸡蛋吗?我宁愿不必切换到virtualenv。这些鸡蛋也出现在我的python路径中:['/usr/local/lib/python2.6/dist-packages/Unidecode-0.04.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pygooglechart-0.3.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Graphy-1.0.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/virtualenv-1.5.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/glumpy-0.1.0-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_debug_toolbar-0.8.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Pympler-0.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_profiles-0.2-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_form_utils-0.1.8-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_audit_log-0.2.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/South-0.7.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_autocomplete-0.3.dev-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Babel-0.9.5-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/collective.ordereddict-0.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/ordereddict-1.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_ajax_selects-1.1.4-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/openpyxl-1.2.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_dynamic_choices-0.1.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode', '/usr/local/lib/python2.6/dist-packages', '/home/[redacted user name]/django', '/usr/lib/python2.6/site-packages/django/', '/home/[redacted user name]/django/[redacted app name]/', '/usr/lib/pymodules/python2.6/IPython/Extensions']
最佳答案
升级到mod_wsgi 3.3。不要使用mod_wsgi2.X。读:
http://blog.dscpl.com.au/2009/04/wsgi-and-printing-to-standard-output.html
简而言之,某处的Python代码正在尝试使用sys.stdin,这从技术上讲意味着该代码不能在所有WSGI实现上都可移植地使用。较旧的mod_wsgi版本试图强调这一点,以迫使人们编写可移植的代码。此类检查不再在mod_wsgi 3.3中进行,它使人们可以编写不可移植的代码。
关于python - django鸡蛋模板加载程序错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5173726/