2011-03-02 59 views
1

我試圖根據他們的文檔安裝dajax/dajaxice,這表明我在我的settings.py中取消了雞蛋模板加載器(第三位在下面的元組中)的註釋。django雞蛋模板加載程序錯誤

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
    'django.template.loaders.eggs.Loader', 
) 

然而,這使我的網站停止「在/ IO錯誤:通過mod_wsgi的限制sys.stdin訪問」與我合作開發機器上。當我查看錯誤出現的位置時,它會出現在與這個項目無關的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'] 

回答

2

升級到mod_wsgi 3.3。不要使用mod_wsgi 2.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中完成,它允許人們編寫非可移植的代碼。

+0

我也有同樣的問題,但錯誤來自setuptools-0.6c11-py2.7.egg。 – radztech 2013-02-25 10:13:04