无法从错误消息中找到python脚本

2024-05-13 08:47:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图跟踪python错误消息的来源,当我试图运行我的代码时,test.py。在

我试图从错误输出跟踪的模块(由test.py调用)显然是:

build/bdist.linux-x86_64/egg/george/gp.py

错误消息片段:

^{pr2}$
  1. 我可以找到build/bdist.linux-x86_64/,但它是空的。也许这不是“对的”。在
  2. 我还发现了gp.py的另一个版本,但是当我对其进行更改时,什么都不会发生,所以{}没有调用该版本。在

我所要做的就是找到发生错误的代码,这样我就可以向它添加更多的输出,以找出出了什么问题。在


以下是错误消息:

Traceback (most recent call last):
  File "test.py", line 213, in <module>
    mumc, dummy = gp1.predict(residuals, dates, kernel = kernelprime )
  File "build/bdist.linux-x86_64/egg/george/gp.py", line 511, in predict
  File "build/bdist.linux-x86_64/egg/george/solvers/basic.py", line 87, in apply_inverse
  File "/home/me/.local/lib/python2.7/site-packages/scipy/linalg/decomp_cholesky.py", line 174, in cho_solve
    b1 = asarray_chkfinite(b)
  File "/home/me/.local/lib/python2.7/site-packages/numpy/lib/function_base.py", line 1219, in asarray_chkfinite
"array must not contain infs or NaNs")
ValueError: array must not contain infs or NaNs

所以很明显,在这一行的某一点上,我将一个包含inf或nan的数组输入到它不喜欢的scipy或numpy代码中。但是要想知道为什么这些值首先是infs或nan,那么predict模块中似乎出了什么问题。在

(gp1是一个在gp.py代码中定义的类!)在


Tags: 代码inpytestbuild消息egglinux
2条回答

您可以通过使用模块上的.__file__属性或调用inspect.getfile()来查看实际加载的文件。在

您的示例没有提到,但是您可能在您的test.py中导入gp或{}。你可以试试:

import gp
import inspect

print(gp.__file__)
print(inspect.getfile(gp))

这两行代码都应该显示从Python的角度实际加载了什么文件,并允许您跟踪有问题的文件。在

在将源文件路径编译为Python字节码时,Python将源文件路径存储在模块的字节编译版本中。这些字节编译的版本通常“动态”生成并自动重复使用。在

您的程序无意中在树中的某个地方使用了一个gp.pyc文件,该文件是从您看到的build/...路径中的gp.py编译的。通常,build/只在构建包时使用。我怀疑你在建造george蛋的时候把事情搞砸了。在

检查Python路径中的.pyc文件并删除它们。它们将被自动重建(假设找到了真正的.py文件)。在

例如,从项目目录:

$ find . -name `*.pyc` -exec rm {} \;

相关问题 更多 >