2013-03-05 3 views
0

Хорошо, так что это самая странная вещь, которую я видел, случается довольно долго. Итак, я запускаю vs2012, как обычно, и начинаю импорт. У меня есть модуль, с которым я работаю, и импортирую его через статический импорт из корня моего модуля.Ошибки НЕ выбрасываются правильно?

import os 
from foo.bar import bang 

Я выполняю их в интерпретаторе ... и внезапно мои исключения не работают.

Я ввожу, assert 1 == 2, и ничего не происходит. Я печатаю x[1], и ничего не происходит. Нет x undefined, no assertionerror, ничего.

Хорошо, поэтому я перезапускаю свой интерпретатор и просто выполняю утверждение утверждения. Он работает нормально.

Кто-нибудь когда-либо видел что-либо подобное? Что может быть причиной этого? (Да, я знаю, что импортируемый модуль, но, видя, как это совсем немного кода, возможно, место, чтобы начать искать, прежде чем отправиться нырять в глубины?)

[править]

Запуск команды в интерактивный, похоже, тоже долгое время - 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

+0

Если 'sys.excepthook == sys .__ excepthook__', то это означает, что это не является причиной ваших проблем. Я не совсем понял это в своем посте, извините. –

+0

Да, я понял это после прочтения (я возвращаю свой контрольный знак, но я оставляю вас с моим повышением для ваших усилий. – kreativitea

Смежные вопросы