2009-06-07 1 views
6
장고 아파치와 연동하여려고

를 가져올 수 없습니다, 나는 다음과 같은 오류를 받고 있어요 :mod_python의 오류 : ImportError를 : 설정

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

내 장고 응용 프로그램이/홈/사용자/장고에 있습니다 /MyDjangoApp은/

내 httpd.conf 파일 위치 섹션은 다음과 같습니다

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

어떻게 장고 작동하게 할 위치 섹션을 수정하는 방법을 가르쳐주세요?

답변

11

mod_python이/home/user/django/MyDjangoApp 디렉토리에 존재하지 않는 MKSearch 모듈의 설정을 찾고 있다고 생각합니다.

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

을 또는 아래로 DJANGO_SETTINGS_MODULE의 ENV var에에서 모듈 이름을 제거 : 아래와 같이 PYTHONPATH 지침에 부모 디렉토리를 추가하십시오

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 
+0

+1 django 문서는 "/ home/user/django"("MyDjangoApp import foo"에서 허용)와 대안의 차이점을 보완합니다. –

+0

설정 앞에서 모듈 이름을 제거하면 문제가 해결되었습니다. 휴! – PhoebeB

4

완전성이 답변을주기 - 당신의 사건에도 불구하고 다른.

한 번 내 django 프로젝트의 이름을 test으로 지정했습니다. 음, 장고는 파이썬 모듈 테스트를 가져오고있었습니다. 이것은 회귀 테스트를위한 모듈이며 내 프로젝트와 아무 관련이 없습니다.

이 오류는 python이 django 프로젝트와 같은 이름의 다른 모듈을 찾으면 발생합니다. 프로젝트 이름을 뚜렷하게 지정하거나 응용 프로그램의 상위 디렉토리 경로를 sys.path 앞에 추가하십시오.

+2

정확히 나에게 일어난 일. 감사! – nlaq

+0

이것은 내 문제이기도하다. 테스트라는 이름의 준비 영역이 있고 이름이 기본 제공 패키지와 충돌합니다. 이것은 장고가 아마도 특별한 오류 메시지를 내야 할만큼 일반적으로 보입니다. –

-1

다음 예제는 Apache 구성 파일에 있습니다. 여러분의 좋은 답변에도 불구하고 mod_python을 사용하기가 매우 어려웠습니다. 대부분의 경우, 내가받은 모든 의견은 mod_python 대신 mod_wsgi를 사용한다고 말합니다.

댓글 보스톤 파이썬 Meetup에서 보았던 모든 동의어 mod_wsgi는 사용하기가 더 쉽습니다. 제 경우에는 Red Hat EL 5 WS에서 mod_python을 변경하는 것이 실용적이지 않습니다.

<Location /> 
     SetHandler python-program 
     PythonHandler django.core.handlers.modpython 
     SetEnv DJANGO_SETTINGS_MODULE settings 
     PythonOption django.root /home/amr/django/amr 
     PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib 
/site-packages/django'] + sys.path" 
     PythonDebug On 
</Location>