2013-02-15 2 views
0

similar question이 있지만 오늘 발견 한 특별한 경우에는 응답하지 않습니다.UnboundLocalError : syncdb 동안 할당 전에 로컬 변수 'full_path'가 참조되었습니다.

openSUSE에서 실행 중이며 syncdb를 수행 할 때이 암호 오류가 발생했습니다. 유사한 상황에서 다른 사람들을 돕기 위해 내 조사 결과를 게시하고 있습니다.

> python manage.py syncdb 
Creating tables ... 
Installing custom SQL ... 
Installing indexes ... 
Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",  line 459, in execute_manager 
    utility.execute() 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",  line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
    output = self.handle(*args, **options) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle 
    return self.handle_noargs(**options) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 164, in handle_noargs 
    call_command('loaddata', 'initial_data', verbosity=verbosity, database=db) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 150, in call_command 
    return klass.execute(*args, **defaults) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
    output = self.handle(*args, **options) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 239, in handle 
    (full_path, ''.join(traceback.format_exception(sys.exc_type, 
UnboundLocalError: local variable 'full_path' referenced before assignment 

답변

2

오류가 (적발되어 있어야하고, 완전한 오류 메시지가 사용자에게 반환되어 있어야합니다) 꽤 아니지만, 몇 가지 기본 또는 옵션 직렬화 모듈이 시스템에없는 경우에 발생합니다.

예를 들어, 사용자의 settings.py에서 SERIALIZATION_MODULES dict에 wadofstuff.django.serializers.json 직렬화 모듈이 언급되어 있고 설치되어 있지 않으면 오류가 반환됩니다.

등에 의해 설치한다 :

수세에
pip install wadofstuff-django-serializers 

, 다른 가능성은 python-xml 모듈 (가 python-base 패키지의 일부가 아닌)가 설치되지 않도록하고 있으므로 가능하다 오기 xml.sax.saxutils이 실패합니다.

sudo zypper in python-xml 

을하고 그것을 작동합니다 :이 경우

을 수행하여, 예를 들어, python-xml를 설치합니다.

이 방법으로 문제가 해결되지 않으면 pdb을 실행하여 실패한 부분에 중단 점을 넣을 수 있습니다. 예를 들어 :

> python -m pdb manage.py syncdb 
> manage.py(2)<module>() -> from django.core.management import execute_manager 
(Pdb) b /usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py:110 
Breakpoint 1 at /usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py:110 
(Pdb) c 
Creating tables ... 
Installing custom SQL ... 
Installing indexes ... 
> /usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py(110)handle() 
-> for fixture_label in fixture_labels: 
(Pdb) n 
> /usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py(111)handle() 
-> parts = fixture_label.split('.') 

어떤 시점에서, 당신이 오류를 찾을 것이라고 명확하게 팝업 :

ImportError: 'No module named xml.sax.saxutils'