2012-07-20 4 views
0

(자세한 내용은 내 질문 업데이트) 내 django 앱이 내 dev 서버에서 제대로 실행 중입니다. 나는 다른 모듈에 '/ 수입에서'위가 (구조 아래 참조 추가하는 경우, 그것은 '라는 이름의 모듈의,models.py의 Django ImportError

from myapp.models import MyTable 

그러나 : 나는 잘 작동 아래 라인을 사용하여 데이터베이스를 가져옵니다 전망을 problem_module.py ') 내가 sqlite3 데이터베이스에서 끌어 오기를 쓰고 있어요,이 오류가 발생합니다.

raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'myfolder.settings' (Is it on sys.path?): No module named myfolder.settings 

내가 읽은 사람들이 오류를 얻을 때 권장하는 다양한 솔루션을 시도,하지만 난 그것을 해결할 수없는이기 때문에 내가 뭔가 빠진했습니다.

저는 장고 1.4를 사용 중이며 권장되는 레이아웃으로되어 있습니다.

mysite/ 
     manage.py 

     mysite/ 
      __init__.py 
      settings.py 
      urls.py 
      wsgi.py 
     myapp/ 
      __init__.py 
      models.py 
      admin.py 
      views.py 

      indevelopment/ 
       __init__.py 
       problem_module.py 

답변

2

나는 무슨 일이 일어 났는지 알아 낸 이유를주의 깊게 추적을 통해가는 장고 소스 코드를 찾고 후. 여기 무슨 일이 일어나는가?

당신은 실행하면 : python manage.py runserver

환경 변수를 얻는다 이미이 작은 작은 파일을 변경하거나 장고 1.4은 자동으로 당신을 위해 그것을 구성하기 때문에 그냥주의를 지불하지 않으면 제대로 가정 설정합니다. os.environ이 설정은 아래에 있기 때문에 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

그러나 : 당신이 경우, python manage.py runserver

그렇지 않으면 : if __name__ = "__main__" 표현이와 마찬가지로, 그것은 단지, 파일을 직접하는 경우 호출을 실행됩니다 Eclipse에서 모듈 테스트와 같은 환경 변수가 필요한 파일을 실행하면 os.environ을 다른 장소 (셸 등)에 설정해야합니다.

내가 일반적으로이 모든 것을 지적했지만 그 문맥이 필요했습니다.

:

하지만 약간의 조정 (예, 좋은 생각으로 커플) 소스 코드에 당신은 또한, 작품 아래의 변화를 발생 위치를 확인할 특히

/django/conf/__init__.py에서 수동으로 하드 코딩 할 수있는

# in module: /django/conf/__init__.py 

class LazySettings(LazyObject): 
    def _setup(self): 
     try: 
      # Comment out the call to os.environ and hardcode in your app settings 
      # settings_module = os.environ[ENVIRONMENT_VARIABLE] 
      # WARNING: bad practice to do this. ;. 
      settings_module = "myapp.settings" 
0

DJANGO_SETTINGS_MODULE을 변경 했습니까?

export DJANGO_SETTINGS_MODULE=mysite.settings을 시도하고 dev 서버를 시작하십시오.

+0

저는 내 환경 변수 DJANGO_SETTINGS_MODULE이 괜찮다고 확신합니다.그것은 내 manage.py 파일에 설정되어 있습니다. – wintour

0

은 manage.py 수정 :

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 
+0

제안 해 주셔서 감사합니다. 나는 그것이 이것이라고 생각하지 않는다. 내 설정은 django 1.4에서 startapp을 시작했을 때 정확합니다. '#는/usr/빈/ENV 파이썬 수입 OS 수입 SYS 경우 __name__ == "__main__":! os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "myapp.settings") django.core에서 . 관리 가져 오기 execute_from_command_line execute_from_command_line (sys.argv) ' – wintour

+0

@wintour _myapp_ 폴더 또는 _mysite_ 폴더에서 설정 하시겠습니까? 아마도 당신은 다시 확인해야합니다. – Rohan

+0

@Rohan 의견을 보내 주셔서 감사합니다. 내 대답을 업데이트 (두 번)하고 내 폴더를 정확하게 트리 표현했습니다. 내 앱이 작동 중입니다. 그리고 models.py에서 가져 오기는 views.py에서 작동하지만 다른 폴더의 다른 모듈에서는 작동하지 않습니다. – wintour

0

PyCharm은 DJANGO_SETTINGS_MODULE을 빈 문자열로 무시할 때가 있습니다. setdefault() 호출 후 manage.py를 디버그하여 실제로 변경되는지 확인하십시오. 파이어 아이콘 설정이 변경되지 않았거나 os.environ['DJANGO....']='my_settings' .. 또는 해킹 파일 .idea/을 사용하는 경우 .idea/workspaed.xml에는

env name="DJANGO_SETTINGS_MODULE" value=""
이 포함되어 있습니다.

관련 문제