2011-08-24 122 views
0

我一直在尝试使用Django与Apache 2.2和mod_wsgi与Django 1.3和Python 2.7.2一起使用编写的应用程序 - 但它根本不起作用。我也一直在努力 - 它正在开发完美的dev-server。但我无法投入生产env(apahce)。Apache mod_wsgi导入错误 - 没有找到模块

我的Apache错误日志显示以下内容:

[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> 

我不能了解为什么apache在站点包中寻找模块。它存在于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的答案没有回答,我只是假设其中一个会有所帮助。

Graham Dumpleton的意见认为这应该是修复:

添加以下到.wsgi文件:

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

我不开发Windows上的Python,但我认为路径应该写成'C:\\workspace\\MB\\src\\'不像'C:/workspace/MB/src/'(来自django docs哪些不总是正确的。)

让我知道这是否/没有帮助。

相关问题