2010-08-22 3 views
1

나는 작동하는 django 사이트가 있고 해당 데이터를 통해 독립 실행 형 스크립트를 실행하려고합니다. 나는 this 기사를 따르고 있지만 작동시키지 못합니다.django 독립 실행 형 스크립트 가져 오기 오류

1)

import sys, os 
sys.path.append(os.path.abspath('..')) 

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

from mysite.main.models import Image 
#from main.models import Image #should work too 

2)

import sys, os 
sys.path.append(os.path.abspath('..')) 

from django.core.management import setup_environ 
from mysite import settings 
#import settings #should work too 
setup_environ(settings) 

from mysite.main.models import Image 

모두 저를 준다 "AttributeError : '모듈'개체가 어떤 속성 '모델'이 없다"모듈 I에서 제기를 나는 두 가지 방법을 시도 가져 오기 (main.models)하려고합니다.

스크립트 자체는 "기본"앱이 제대로 설치되어 작동중인 작업 사이트의 프로젝트 루트에 있습니다. 설정이나 모델에는 문제가 없어야합니다.

답변

0

import 성명이 작동하지 않아야하는 이유가 표시되지 않습니다. 모듈 구조가 import 명령과 일치하는지 확인하십시오. 모듈 경로는 mysite -> main -> models이어야합니다. 일부 개발자는 경로에 mysite -> apps -> main -> models이되도록 여분의 apps 모듈을 프로젝트에 추가합니다. 이것이 귀하에게 해당하지 않는지 확인하십시오.

확인하려면 파이썬 REPL뿐만 아니라 Django shell에서 다음을 수행하십시오.

from mysite.main.models import Image 

그래도 해결되지 않으면 모듈 구조 문제를 해결해야합니다.

+0

덕분에 "export PYTHONPATH = $ PYTHONPATH :/projectpath /; export DJANGO_SETTINGS_MODULE = mysite.settings; django-admin.py shell"을 시도해 보았습니다. 나는 혼란 스럽다, 어떤 생각? – Lucie

+0

좋아,이 말 그대로 나를 죽이고있다. AttributeError가 "class Image (imagekit.models.ImageModel) :"클래스 정의의 "main.models"모듈에서 상승했기 때문에 imagekit 모듈을 다음과 같이 변경하려고했습니다 : "import imagekit"을 자세한 정보 : "from mysite.apps.imagekit.models import ImageModel "그리고 이제는 어떻게 작동하는지 추측 할 수 있습니다. 큰 지방 Questionmark ??? – Lucie

+0

아. 'import imagekit; imagekit.models.ImageModel'은'imagekit'을'PYTHONPATH'에 넣어야합니다. 나는 그렇지 않다고 생각한다. 그러나'mysite.apps.imagekit.models import ImageModel'은'mysite'가 당신의'PYTHONPATH'에 있기 때문에 작동 할 것입니다. 이것을 테스트하려면'imagekit'의 위치를'PYTHONPATH'에 추가하고 가져 오기의 첫 번째 변형을 다시 시도하십시오. –

4

나를 위해 그것을했다 자신과 장고 쉘 코드 (shell.py)에서이 조각 매우 유사한 오류 고투 :

from django.db.models.loading import get_models 
loaded_models = get_models() 

는 모델 클래스를 가져 오기 전에 넣습니다.

+0

1로 업그레이드 한 후 순환 모델 가져 오기 문제가 있습니다.5.이 문제가 수정되었지만 그 이유를 아는 사람이 있습니까? – spuriousdata

+0

젠장, 작동한다. –

0

manage.py 파일을 복제하면됩니다. 마지막 두 줄을 삭제하고 코드를 끝에 추가하십시오. 매력처럼 작동합니다! 예를 들어 광산은 지금은 일을하기 위해 더 공식 (그리고 복잡한) 방법이 없다고 생각되는 내 데이터베이스 항목 중 하나에서 데이터를 출력 다음,

#!/usr/bin/env python 
import os 
import sys 

if __name__ == "__main__": 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "conf.settings_dev") 
    #from django.core.management import execute_from_command_line 
    #execute_from_command_line(sys.argv) 
    from events.models import Event 
    e = Event.objects.get(id="testID") 
    print e.eventTitle 

을 포함하지만이에 시작하기에 좋은 장소입니다 들어 그동안.

관련 문제