2011-04-23 3 views
3

오류 :장고 loaddata 설정 내 로컬 컴퓨터에 loaddata를 사용하려고 할 때 (/ sqlite가 승리)

raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined. 

이 도움이된다면 내가 djangoconfig 응용 프로그램을 사용하고 있습니다 : 나는 다음과 같은 오류가

python django-admin.py loaddata dumpdata.json 

:

""" 
Django-config settings loader. 
""" 

import os 

CONFIG_IDENTIFIER = os.getenv("CONFIG_IDENTIFIER") 
if CONFIG_IDENTIFIER is None: 
    CONFIG_IDENTIFIER = 'local' 

# Import defaults 
from config.base import * 

# Import overrides 
overrides = __import__(
    "config." + CONFIG_IDENTIFIER, 
    globals(), 
    locals(), 
    ["config"] 
) 

for attribute in dir(overrides): 
    if attribute.isupper(): 
     globals()[attribute] = getattr(overrides, attribute) 

프로젝트> 파이썬 manage.py loaddata dumpdata.json --settings = config.b ASE

WARNING: Forced to run environment with LOCAL configuration. 

Problem installing fixture 'dumpdata.json': Traceback 
(most recent call last): 
    File "loaddata.py", line 174, in handle 
    obj.save(using=using) 

... 


    File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line 
234, in execute 
    return Database.Cursor.execute(self, query, params) 
IntegrityError: columns app_label, model are not unique 
+0

은'IntegrityError '는 contrib 패키지 중 하나 인 content types 테이블에서 오는 것처럼 보입니다. 내가로드하려고하는 데이터베이스가 이미 이전에 실패한로드에서 무언가를 가지고 있다고 확신 할 수 있습니다. SQLite를 사용하고있는 것처럼 보이기 때문에 새로운 데이터베이스를 생성하기 위해 필요하다면 데이터베이스 파일'syncdb'를 지우고로드를 다시 시도하십시오. –

+1

@mike DeSimone과 동의하지 않으면'syncdb'는 content_types를 데이터로 초기화하므로 같은 오류가 발생할 수 있습니다. content_types에 대한 데이터를 가져 오려면 dumpdata.json을 편집해야 할 수도 있습니다. – JCotton

+0

sqlite db가 제거되었습니다. syncdb를 실행 했습니까? 시도한 loaddata = 같은 오류. – Eeyore

답변

1

장고에 설정을 제공하는 두 개의 표준 방법이 있습니다. 당신은 여러 설정 파일을 가질 수 있기 때문에 사용

  • django-admin.py --settings=mysite.settings

Django-config와 함께 옵션으로 또는 (유닉스 또는 수출) set DJANGO_SETTINGS_MODULE=mysite.settings

  • 을 설정 사물을 다르게한다. Django-config는 manage.py와 함께 사용하여 사용할 것을 지정합니다. 가능한 경우 manage.py를 사용해야합니다. 그것은 환경을 설정합니다. 귀하의 경우에는 이것을 시도하십시오 --settings는 django-config의 구성 폴더에서 사용하려는 특정 .py 파일을 가리 킵니다.

    django-admin.py loaddata dumpdata.json --settings=<config/settings.py>

    사실 --settings은 어쩌면

  • +0

    나는 그것을 시도하고 그것이 작동하지 않았다 - 아마 내가 내 설정을 관리하는 djangoconfig 응용 프로그램을 사용하기 때문에. – Eeyore

    +0

    인터프리터의 출력물로 내 질문을 편집했습니다. manage.py는 올바른 설정 파일을 가져 오는 것 같지만 이제는 새로운 오류가 발생합니다. – Eeyore

    +0

    실제로는 --settings with manage.py가 필요하지 않습니다. loaddata가 manage.py와 작동하는 것처럼 보이므로 설정 옵션을 그대로 사용하십시오. – JCotton

    5

    <mysite>.config.<your settings>.py 초기 프로젝트를 설정하는 것보다 다른 아무것도 django-admin.py를 사용하지 마십시오 파이썬 패키지 구문을 원한다. 프로젝트가 있으면 대신 manage.py을 사용하십시오. 설정 파일에 대한 참조가 설정됩니다.

    +0

    비슷한 상황에 처했을 때이 답이 매우 유용하다는 것을 알게되었습니다. 이것은 잼에서 빨리, 감사합니다 저를 얻었다! –

    3

    syncdb은 content_types를로드하므로 데이터를로드하기 전에 해당 테이블을 지워야합니다. 이런 식으로 뭔가 :

    c:\> sqlite3 classifier.db 
    sqlite> delete from django_content_type; 
    sqlite> ^Z 
    c:\> python django-admin.py loaddata dumpdata.json 
    
    또한

    , 당신은 syncdb 때 사람들은 가능성으로도 데이터기구와 충돌, 슈퍼 유저, 또는 사용자를 생성하지 않습니다 확인 ...