2010-03-28 39 views
11

我一直在试图获得一个用django编写的应用程序 - 但它不工作。我也一直在努力 - 它正在开发完美的dev-server。但我无法投入生产env(apahce)。Django - 没有模块名为app

我的项目名称是apstat,应用程序名称是基本的。

我尝试访问它如下

Blockquote http://hostname/apstat

但它显示了以下错误:

MOD_PYTHON ERROR 

ProcessId:  6002 
Interpreter: 'domU-12-31-39-06-DD-F4.compute-1.internal' 

ServerName:  'domU-12-31-39-06-DD-F4.compute-1.internal' 
DocumentRoot: '/home/ubuntu/server/' 

URI:   '/apstat/' 
Location:  '/apstat' 
Directory:  None 
Filename:  '/home/ubuntu/server/apstat/' 
PathInfo:  '' 

Phase:   'PythonHandler' 
Handler:  'django.core.handlers.modpython' 

Traceback (most recent call last): 

    File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch 
    default=default_handler, arg=req, silent=hlist.silent) 

    File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1229, in _process_target 
    result = _execute_target(config, req, object, arg) 

    File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1128, in _execute_target 
    result = object(arg) 

    File "/usr/lib/pymodules/python2.6/django/core/handlers/modpython.py", line 228, in handler 
    return ModPythonHandler()(req) 

    File "/usr/lib/pymodules/python2.6/django/core/handlers/modpython.py", line 201, in __call__ 
    response = self.get_response(request) 

    File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 134, in get_response 
    return self.handle_uncaught_exception(request, resolver, exc_info) 

    File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 154, in handle_uncaught_exception 
    return debug.technical_500_response(request, *exc_info) 

    File "/usr/lib/pymodules/python2.6/django/views/debug.py", line 40, in technical_500_response 
    html = reporter.get_traceback_html() 

    File "/usr/lib/pymodules/python2.6/django/views/debug.py", line 114, in get_traceback_html 
    return t.render(c) 

    File "/usr/lib/pymodules/python2.6/django/template/__init__.py", line 178, in render 
    return self.nodelist.render(context) 

    File "/usr/lib/pymodules/python2.6/django/template/__init__.py", line 779, in render 
    bits.append(self.render_node(node, context)) 

    File "/usr/lib/pymodules/python2.6/django/template/debug.py", line 81, in render_node 
    raise wrapped 

TemplateSyntaxError: Caught an exception while rendering: No module named basic 

Original Traceback (most recent call last): 
    File "/usr/lib/pymodules/python2.6/django/template/debug.py", line 71, in render_node 
    result = node.render(context) 
    File "/usr/lib/pymodules/python2.6/django/template/debug.py", line 87, in render 
    output = force_unicode(self.filter_expression.resolve(context)) 
    File "/usr/lib/pymodules/python2.6/django/template/__init__.py", line 572, in resolve 
    new_obj = func(obj, *arg_vals) 
    File "/usr/lib/pymodules/python2.6/django/template/defaultfilters.py", line 687, in date 
    return format(value, arg) 
    File "/usr/lib/pymodules/python2.6/django/utils/dateformat.py", line 269, in format 
    return df.format(format_string) 
    File "/usr/lib/pymodules/python2.6/django/utils/dateformat.py", line 30, in format 
    pieces.append(force_unicode(getattr(self, piece)())) 
    File "/usr/lib/pymodules/python2.6/django/utils/dateformat.py", line 175, in r 
    return self.format('D, j M Y H:i:s O') 
    File "/usr/lib/pymodules/python2.6/django/utils/dateformat.py", line 30, in format 
    pieces.append(force_unicode(getattr(self, piece)())) 
    File "/usr/lib/pymodules/python2.6/django/utils/encoding.py", line 71, in force_unicode 
    s = unicode(s) 
    File "/usr/lib/pymodules/python2.6/django/utils/functional.py", line 201, in __unicode_cast 
    return self.__func(*self.__args, **self.__kw) 
    File "/usr/lib/pymodules/python2.6/django/utils/translation/__init__.py", line 62, in ugettext 
    return real_ugettext(message) 
    File "/usr/lib/pymodules/python2.6/django/utils/translation/trans_real.py", line 286, in ugettext 
    return do_translate(message, 'ugettext') 
    File "/usr/lib/pymodules/python2.6/django/utils/translation/trans_real.py", line 276, in do_translate 
    _default = translation(settings.LANGUAGE_CODE) 
    File "/usr/lib/pymodules/python2.6/django/utils/translation/trans_real.py", line 194, in translation 
    default_translation = _fetch(settings.LANGUAGE_CODE) 
    File "/usr/lib/pymodules/python2.6/django/utils/translation/trans_real.py", line 180, in _fetch 
    app = import_module(appname) 
    File "/usr/lib/pymodules/python2.6/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
ImportError: No module named basic 

我的settings.py如下:

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'apstat.basic', 
    'django.contrib.admin', 
) 

如果我删除apstat.basic,它通过,但这不是一个解决方案。这是我在做apache的东西吗?

我的Apache - 设置 -

<VirtualHost *:80> 
     ServerAdmin [email protected] 

     DocumentRoot /home/ubuntu/server/ 
     <Directory /> 
       Options None 
       AllowOverride None 
     </Directory> 

     <Directory /home/ubuntu/server/apstat> 
       AllowOverride None 
       Order allow,deny 
       allow from all 
     </Directory> 

     <Location "/apstat"> 
       SetHandler python-program 
       PythonHandler django.core.handlers.modpython 
       SetEnv DJANGO_SETTINGS_MODULE apstat.settings 
       PythonOption django.root /home/ubuntu/server/ 
       PythonDebug On 
       PythonPath "['/home/ubuntu/server/'] + sys.path" 
     </Location> 

</VirtualHost> 

我现在坐在这个超过一天。如果有人能帮助我,那会很好。

+1

发现此问题。在__init__.py里面,我正在做一些初始化。在开发服务器上它工作,但在Apache中,一些权限问题导致它失败。 Django吃错误,所以它是不明显的。 – Koran 2010-03-28 12:37:47

回答

12

您的基本有__init__.py

+2

是的。其实这是问题所在。它有初始化日志等的init.py。methinks权限有一些问题,导致它出错。所以,当我使用dev服务器进行测试时,它运行良好,但在Apache中失败了。 Django吃了实际的错误日志;-( – Koran 2010-03-28 12:35:46

+0

你可以在apache错误日志中找到它们。 – 2010-03-29 08:49:48

0

通常将项目目录添加到sys.path,然后直接在INSTALLED_APPS和其他应用程序中导入应用程序名称。试试这个。

+0

我试过了,但无济于事。 – Koran 2010-03-28 09:26:45

4

您需要确保该项目在您的PYTHONPATH。也许尝试输出sys.path变量在你的设置顶端文件:

import sys 
print sys.path 

如果这不符合mod_python试工作,它写入一个文件:

import sys 
file('/tmp/mysyspath.txt', 'w').write(repr(sys.path)) 

但即使是意志工作,这里是一个简短的警告: django社区不鼓励使用mod_python。它不再由其创建者维护,也不是部署django项目的最佳解决方案。如果您的服务器上可用,请尝试使用mod_wsgi

相关问题