Q: 'UnboundLocalError': 赋值前引用的局部变量'exitErr'

Q: 'UnboundLocalError': local variable 'exitErr' referenced before assignment

我想在Spyder中使用PDE Solver Fipy IDE,尝试按照官方安装指南安装: 现在建议先运行 fipy.test()再使用包,这里出现如下错误。

File "C:\Users\Me\AppData\Roaming\Python\Python27\site-packages\fipy\tests\test.py", line 263, in run_tests
    raise exitErr

UnboundLocalError: local variable 'exitErr' referenced before assignment

我不明白这在上下文中是什么意思,这是此错误所指的代码:

    try:
        unittest.main(
            None, None, [unittest.__file__]+self.test_args,
            testLoader = loader_class()
            )
    except SystemExit as exitErr:
        # unittest.main(..., exit=...) not available until Python 2.7
        from fipy.tests.doctestPlus import report_skips
        report_skips()
        if self.timetests is not None:
            pass
        else:
            raise

    if "legacy" in printoptions:
        numerix.set_printoptions(legacy=printoptions["legacy"])

    if self.timetests is not None:
        from fipy.tests.doctestPlus import _DocTestTimes
        import numpy
        _DocTestTimes = numpy.rec.fromrecords(_DocTestTimes, formats='f8,S255', names='time,test')
        _DocTestTimes.sort(order=('time', 'test'))
        numpy.savetxt(self.timetests, _DocTestTimes[::-1], fmt="%8.4f\t%s")

    raise exitErr

感谢您报告此事。我已提交问题。

我相信您可以通过将 fipy.tests.test.test.run_tests() 中的相关代码更改为以下内容来修复此错误:

exitErr = None
try:
   ...
except SystemExit, exitErr:
  ...

...

if exitErr is not None:
   raise exitErr

但我需要做一些测试。我实际上无法触发您看到的错误,但您确定的我们的代码肯定是错误的。