2010-03-25 3 views
6

누군가 내 프로젝트 루트 경로를 파이썬 경로에 추가해야하고 내 WSGI 파일에서 응용 프로그램 자체를 추가해야하는 이유에 대한 포인터를 줄 수 있습니까?Django sys.path.append for 프로젝트 * 및 * 응용 프로그램이 WSGI에서 필요합니다.

프로젝트베이스를 'djapp'라고하며, 응용 프로그램을 'myapp'라고합니다. 심지어 'djapp.settings'하지만 "/../djapp/"로그 내 그 'MyApp를'을 가져올 수 없습니다를 알 수있는 라인을 생략하면

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../djapp') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'djapp.settings' 

입니다. ('djapp'의 유효성을 확인했습니다.)

./manage.py 명령으로 제대로 실행됩니다. 프로젝트 폴더에 __init__이 있습니다. from myapp import foo을하고 프로젝트 내에서

site.addsitedir('/home/user/web/project/') 
site.addsitedir('/home/user/web/project/djapp') 

답변

4

djapp (장고 프로젝트 폴더)도 단순히 projectdjapp 폴더 이름을 바꿀 배포에 속하는 상위 폴더에 있기 때문에.

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../project') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 

전체 폴더 레이아웃 존재 :

host.example.com\ 
    etc\ 
    bin\ 
    project\ 
    logs\ 

그리고 무엇 당신이 다음이 코드는 항상 올바른입니다. 이 방법으로 프로젝트는 항상 프로젝트라고 부를 수 있습니다 :)

도움이 되길 바랍니다.

GrtzG

3

아마도 당신이있어 코드 :

는 testings를을 위해, 나는 addsitedir를 사용하여 동일한 문제를 참조하십시오.

두 가지 옵션 :

  • 변화가 휴대 성을 방지하지 않는 것이 좋습니다 from djapp.myapp import foo에;
  • WSGI에 djapp 만 추가하고 DJANGO_SETTINGS_MODULE'settings'으로 설정하십시오.
+0

안녕 다니엘, 피드백에 대한 고맙습니다. 이미 두 번째 옵션을 시도했지만'djapp.urls'를 가져 오는 것에 대해 불평합니다. – GerardJP

관련 문제