Можно ли отображать номер строки вместе с предупреждениями? Я получаю некоторые предупреждения, возможно, от numpy, но я понятия не имею, откуда они взялись. Я не хочу, чтобы мой код находился на борту или вызывал исключение, но я хотел бы получить дополнительную информацию о происхождении предупреждений. Возможно ли это?
Предупреждения, которые выдаются через модуль warnings
, по умолчанию печатаются, включая имя файла и номер строки, а выход может управляться функциями модуля warnings
, а также параметром -W
Python-интерпретатор. Поскольку ваши предупреждения, по-видимому, не включают имя файла и номер строки, модуль warnings
, вероятно, вам не поможет. Поскольку вы подозреваете, что numpy
может быть виновником, я предлагаю взглянуть на numpy.seterr()
. Может быть, поворот предупреждений в ошибки помогает.
Напишите отдельный модуль, подобный этому.
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
EDIT:
Arg! Я необъяснимо назвал это неправильным.
Используйте модуль pychecker. Если у вас установлены distutils, просто введите: easy_install pychecker
в командной строке, чтобы получить самую новую версию. По умолчанию генерирует предупреждения и перечисляет номера строк для них.