好的,所以这是我在很长一段时间里看到过的最奇怪的事情。所以,我像往常一样开火vs2012,开始一些进口。我有一个我正在使用的模块,我通过静态导入从我的模块的根目录导入它。
import os
from foo.bar import bang
我在解释器中执行这些......突然之间,我的异常不起作用。
我输入,assert 1 == 2
,没有任何反应。我键入x[1]
,没有任何反应。没有x是未定义的,没有断言错误,没有。
好的,所以我重启我的解释器,然后执行断言声明。它工作正常。
有没有人见过这样的东西?什么可能导致它? (是的,我知道它是导入的模块,但看到它是相当多的代码,也许是在我潜入深度之前开始寻找的地方?)
[编辑]
在交互式中运行命令似乎也需要很长时间 - dir()
需要3秒钟才能找到8个左右的项目列表。
答案 0 :(得分:3)
这是一种可能性:
import sys
def hook(type, value, traceback):
pass
sys.excepthook = hook
assert 1 == 2
在这种情况下,断言不会打印任何内容。您可以通过查看sys.excepthook != sys.__excepthook__
。
注意:ipython,例如,愚弄这个值。因此,如果您正在对此进行测试,请确保仅使用python
而不是ipython
。