локальная переменная 'sresult' указана перед присваиванием - PullRequest
1 голос
/ 11 апреля 2010

У меня было несколько проблем при попытке использовать PP. Я использую Python2.6 и PP 1.6.0 RC3. Используя следующий тестовый код:

import pp
nodes=('mosura02','mosura03','mosura04','mosura05','mosura06',
       'mosura09','mosura10','mosura11','mosura12')

def pptester():
        js=pp.Server(ppservers=nodes)
        tmp=[]
        for i in range(200):
                tmp.append(js.submit(ppworktest,(),(),('os',)))
        return tmp

def ppworktest():
        return os.system("uname -a")

дает мне следующий результат:

In [10]: Exception in thread run_local:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local
    job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment

Exception in thread run_local:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local
    job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment

Exception in thread run_local:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local
    job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment

Exception in thread run_local:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local
    job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment

Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 11 апреля 2010

Я не могу прочитать ваш код, потому что он не отформатирован должным образом, но я могу сказать вам точную проблему: вы пытаетесь изменить глобальную переменную с именем "sresult" внутри функции, но вы не добавили эту строкув начало вашей функции:

global sresult

Если вы не объявите переменную глобальную, Python будет считать, что она локальна для функции, если вы попытаетесь назначить ее внутри функции,поэтому, когда вы пытаетесь изменить его или получить к нему доступ, Python будет жаловаться, что вы еще не «связали локальную переменную» (то есть присвоили ее или дали ей значение).

0 голосов
/ 22 декабря 2011

Это ошибка в библиотеке pp. Исправьте или дождитесь исправления.

...