2013-03-05 81 views
0

好的,这是我见过的最奇怪的事情发生在相当长的时间。所以,我像往常一样开火vs2012,并开始一些进口。我有一个我正在使用的模块,并通过静态导入从我的模块的根目录导入它。错误是不正确投掷?

import os 
from foo.bar import bang 

我在解释器中执行这些......突然之间,我的例外不起作用。我想输入assert 1 == 2,没有任何反应。我输入x[1],没有任何反应。没有x是未定义的,没有断言错误,没有。

好的,所以我重新启动我的解释器,只是做断言声明。它工作正常。

有没有人见过类似的东西?什么可能导致它? (是的,我知道这是导入的模块,但看到它是相当多的代码,也许开始寻找之前,我去潜入深处的地方吗?)

[编辑]

在运行命令互动似乎也需要很长时间 - dir()花了3秒拿出一个列表8个左右的项目长。

回答

3

这里有一个可能性:

import sys 

def hook(type, value, traceback): 
    pass 

sys.excepthook = hook 
assert 1 == 2 

在这种情况下,断言将不再打印出来。您可以通过查看sys.excepthook != sys.__excepthook__来验证。

注意:ipython,例如,愚蠢与此值。所以如果你正在测试这个,确保你只使用python而不是ipython

+0

非常好,果然,'sys.excepthook == sys .__ excepthook__'返回'True'。那么问题是,该怎么办? :( – kreativitea 2013-03-05 21:48:33

+0

如果'sys.excepthook == sys .__ excepthook__',那么这意味着这不是你的问题的原因。我不清楚在我的帖子中,对不起。 – 2013-03-05 21:55:44

+0

是的,我在阅读后发现它(收回我的checkvote,但我为你的努力留下你的赞赏。 – kreativitea 2013-03-05 21:58:09