2011-08-24 3 views
0

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? 제발 조언.

+0

정상적인 것은 확실치 않지만 .wsgi'path3 = 'C :/workspace/MB/src/MB /'에 path3이 아닌 경우 ... '등을 추가하면 어떻게됩니까? –

+1

마지막 코멘트를 무시하십시오. 먼저 경로를 .wsgi 파일의''C : \\ wsgi_app \\ django.wsgi''와''C : \\ workspace \\ MB \\ src \\ ''로 변경하십시오. –

+0

POSIX 스타일 경로가 계속 작동해야합니다. sys.path에 모듈이있는 부모 디렉토리가 없으므로 첫 번째 제안은 실제로 정확해야합니다. –

답변

0

그래서 OP가 대답하지 않았기 때문에 내 의견에 대한 답은 하나 또는 다른 것이 도움이 될 것이라고 가정합니다. 나는 창에 파이썬을 개발하지 않지만 내가 생각

path3 = 'C:/workspace/MB/src/MB/' 
if path3 not in sys.path: 
    sys.path.append(path3) 

:하여 .wsgi 파일에 다음을

추가

Graham Dumpleton

이 하나 수정해야한다는 의견에 제안 경로는 'C:/workspace/MB/src/' 마음에 들지 'C:\\workspace\\MB\\src\\'를 작성해야합니다 (장고 docs에서 어떤 항상 올바르지 않습니다.)

이것이 도움이되었거나 도움이되지 않았다면 알려주십시오.