Как узнать, откуда приходит предупреждение в Python - PullRequest
1 голос
/ 17 июня 2011

Можно ли отобразить номер строки вместе с предупреждениями?Я получаю некоторые предупреждения, возможно, от NumPy, но я понятия не имею, откуда они берутся.Я не хочу, чтобы мой код находился на борту или вызывал исключение, но я хотел бы получить больше информации о происхождении предупреждений.Это возможно?

Ответы [ 3 ]

1 голос
/ 17 июня 2011

Напишите отдельный модуль, подобный этому.

import warnings

# capture all warnings
with warnings.catch_warnings(record=True) as warns:
    warnings.simplefilter("always")
    # do the stuff that triggers warnings.  i.e. import your main module
    # and call whatever is necessary to get it going.  This must all be
    # indented under the with statement!

# afterward, print captured warnings
for w in warns:
    print w.category.__name__, "(%s)" % w.message,
    print "in", w.filename, "at line", w.lineno
1 голос
/ 17 июня 2011

Предупреждения, которые выдают через модуль warnings, по умолчанию распечатываются, включая имя файла и номер строки, и выходной сигнал может управляться функциями в модуле warnings, а также параметром -W для Интерпретатор Python. Поскольку ваши предупреждения явно не включают имя файла и номер строки, модуль warnings, вероятно, вам не поможет. Поскольку вы подозреваете, что виновником может быть numpy, я предлагаю взглянуть на функцию numpy.seterr(). Может быть, поможет превратить предупреждения в ошибки.

0 голосов
/ 17 июня 2011

РЕДАКТИРОВАТЬ:

Arg!Я необъяснимо неправильно понял имя.

Используйте модуль pychecker.Если у вас установлен distutils, просто введите: easy_install pychecker в командной строке, чтобы получить самую новую версию.По умолчанию in генерирует предупреждения и перечисляет номера строк для них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...