Django로 작성된 응용 프로그램을 Django 1.3 및 Python 2.7.2와 함께 Apache 2.2 및 mod_wsgi로 작성하려고했으나 전혀 작동하지 않습니다. 나는 얼마 동안 노력해 왔으며, dev-server에서 완벽하게 작동하고있다. 하지만 생산 환경 (apahce)에 넣을 수 없습니다.Apache mod_wsgi 가져 오기 오류 - 모듈이 없습니다.
내 아파치 오류 로그를 보여줍니다 다음
[error] ['C:\\\\Python27\\\\lib\\\\site-packages\\\\django_tinymce-1.5.1a2-py2.7.egg', 'C:\\\\windows\\\\system32\\\\python27.zip', 'C:\\\\Python27\\\\Lib', 'C:\\\\Python27\\\\DLLs', 'C:\\\\Python27\\\\Lib\\\\lib-tk', 'C:\\\\Apache Software Foundation\\\\Apache2.2', 'C:\\\\Apache Software Foundation\\\\Apache2.2\\\\bin', 'C:\\\\Python27', 'C:\\\\Python27\\\\lib\\\\site-packages', 'C:\\\\Python27\\\\lib\\\\site-packages\\\\PIL', 'C:/wsgi_app/django.wsgi', 'path4', 'C:/workspace/MB/src/', 'C:/Django-1.3']
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] mod_wsgi (pid=7608): Exception occurred processing WSGI script 'C:/wsgi_app/django.wsgi'............
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] return self.format('D, j M Y H:i:s O')
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\dateformat.py", line 30, in format
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] pieces.append(force_unicode(getattr(self, piece)()))
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\encoding.py", line 71, in force_unicode
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] s = unicode(s)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\functional.py", line 206, in __unicode_cast
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] return self.__func(*self.__args, **self.__kw)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\translation\\__init__.py", line 81, in ugettext
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] return _trans.ugettext(message)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\translation\\trans_real.py", line 286, in ugettext
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] return do_translate(message, 'ugettext')
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\translation\\trans_real.py", line 276, in do_translate
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] _default = translation(settings.LANGUAGE_CODE)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\translation\\trans_real.py", line 185, in translation
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] default_translation = _fetch(settings.LANGUAGE_CODE)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\translation\\trans_real.py", line 162, in _fetch
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] app = import_module(appname)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\utils\\importlib.py", line 35, in import_module
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] __import__(name)
[Wed Aug 24 10:24:07 2011] [error] [client 127.0.0.1] TemplateSyntaxError: Caught ImportError while rendering: No module named IWorks
다음에 나오는이 django.wsgi
import os
import sys
path = 'C:/wsgi_app/django.wsgi'
if path not in sys.path:
sys.path.append(path)
path2 = 'C:/workspace/MB/src/'
if path2 not in sys.path:
sys.path.append(path2)
os.environ['DJANGO_SETTINGS_MODULE'] = 'MB.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
print >> sys.stderr, sys.path
에 존재하는 그리고 아파치 CONFIGS는 말한다 :
WSGIScriptAlias/"C:/wsgi_app/django.wsgi"
<Directory "C:/wsgi_app/">
Allow from all
</Directory>
나는 수 없습니다입니다 아파치가 site-packages에있는 모듈을 찾고있는 이유를 이해한다. 이것은 C :/workspace/MB/src/MB/IWo에있다. rks? 제발 조언.
정상적인 것은 확실치 않지만 .wsgi'path3 = 'C :/workspace/MB/src/MB /'에 path3이 아닌 경우 ... '등을 추가하면 어떻게됩니까? –
마지막 코멘트를 무시하십시오. 먼저 경로를 .wsgi 파일의''C : \\ wsgi_app \\ django.wsgi''와''C : \\ workspace \\ MB \\ src \\ ''로 변경하십시오. –
POSIX 스타일 경로가 계속 작동해야합니다. sys.path에 모듈이있는 부모 디렉토리가 없으므로 첫 번째 제안은 실제로 정확해야합니다. –