我很困惑为什么,当我编写的模块中的函数中出现错误时,IPython没有向我显示函数中导致错误的行的完整回溯。
注意:我并不是对这个特定错误的原因感到困惑,而是为什么IPython没有向我展示原因。
我的模块名为module.py
,它包含函数function
,其下面写有if __name__ == '__main__'
块。 (模块和功能名称已被更改,以保护无辜者的身份 - 或者可能不是那么无辜。)
这是我在引发错误时获得的回溯。 (请注意,缺少有关function
中哪一行导致错误的信息。)
In [1]: import module as m
In [2]: call = m.function('hello')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-ec0c1e40ec8c> in <module>()
----> 1 call = m.function('hello')
/home/module.py in function(greeting)
TypeError: join() takes exactly one argument (2 given)
答案 0 :(得分:3)
您是否尝试使用%xmode
?
In [2]: %xmode?
Type: Magic function
Definition: %xmode(self, parameter_s='')
Docstring:
Switch modes for the exception handlers.
Valid modes: Plain, Context and Verbose.
If called without arguments, acts as a toggle.
如果你仔细观察,下面的两个例子是不同的,但是长回溯的差异更明显:
In [8]: raise ValueError('Foo')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-05e81bf5c607> in <module>()
----> 1 raise ValueError('Foo')
global ValueError = undefined
ValueError: Foo
普通模式
In [9]: xmode
Exception reporting mode: Plain
In [10]: raise ValueError('Foo')
Traceback (most recent call last):
File "<ipython-input-10-05e81bf5c607>", line 1, in <module>
raise ValueError('Foo')
ValueError: Foo