神秘的IndexError

时间:2013-03-14 21:42:20

标签: python matplotlib ipython

我最近遇到的错误与此类似:

IndexError                                Traceback (most recent call last)
<ipython-input-124-59ca523b1b36> in <module>()
----> 1 first_experiment_comb(model)

  c:\python26\26664\lib\site-packages\experiments.py in first_experiment_comb(mod
 l)
     172                      "Number NZ: " + str(modelz[j].NumNZs) +"\n")
     173
 --> 174         first_experiment(modelz[j], str(j))
     175
     176

c:\python26\26664\lib\site-packages\experiments.py in first_experiment(model, e
t)
     89         plt.close()
     90
---> 91     fl.timberFlow(model)
     92     plt.savefig(dire + "\\timber_flow" +ext+".pdf", bbox_inches = 0)
     93     plt.close()

C:\Python26\26664\lib\site-packages\func_lib.py in timberFlow(model)
    304     if not unVars:
    305         unVars = varValues(model, 'PIEHTLVOL')
--> 306
    307     for i in range(19):
    308             swVarVals.append(swVars[i].X)

IndexError: list index out of range

其中跟踪的最后一行指向不存在的代码,或者在之前的情况下已被注释掉。当我在它自己运行最后一个函数(在func_lib.py中)时,我从未得到神秘的IndexError,只有当它从experiments.py中调用时。

我在pylab python 2.6 W64中运行它。 我无法在iPython或Pylab文档中找到有关此问题的已知错误。

第306行怎么可能是错误的根源?

1 个答案:

答案 0 :(得分:3)

您的代码与字节码不同步。正确地重新加载您的代码。

发生异常时,会检查字节码是否有文件名和亚麻,然后加载源文件以显示该行的原始来源。

但是,如果您更改了源但尚未重新启动python进程(或在ipython中重新加载代码),则在发生异常时会显示错误的行。