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

时间:2018-12-10 20:54:35

标签: python build egg

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

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

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

错误消息摘要:

File "build/bdist.linux-x86_64/egg/george/gp.py", line 498, in
    predict
  1. 我可以找到build/bdist.linux-x86_64/,但是它是空的。也许这不是“正确的选择”。
  2. 我还发现了gp.py的另一个版本,但是当我对其进行更改时,什么也没有发生,因此test.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

因此,很明显,在一行的某个时刻,我正在将包含infs或NaN的数组馈入它不喜欢的scipy或numpy代码中。但是首先要弄清为什么值是infs或NaN,看来predict模块中正在发生任何问题。

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

2 个答案:

答案 0 :(得分:4)

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

您的程序无意间在树中某处使用了gp.pyc文件,该文件是从您看到的gp.py路径中的build/...编译而来的。通常,build/仅在构建软件包时使用。我怀疑您在构建george鸡蛋时以某种方式弄乱了事情。

在您的Python路径中检查.pyc个文件并将其删除。它们会自动重建(如果找到了真实的.py文件)。

例如在您的项目目录中:

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

答案 1 :(得分:1)

您可以通过使用模块上的deleteEmployee(){ const id = this.contentDeleteId; this.firestore.doc('employees/' + id).delete(); this.toastr.warning('Deleted successfully','Employee Register'); } 属性或调用.__file__来查看实际加载的文件。

您的示例未提及,但是您很可能在inspect.getfile()中导入gpgp1。您可以尝试:

test.py

从Python的角度来看,这两行都应显示实际加载了什么文件,并且应该允许您查找问题所在的文件。