Как перенаправить предупреждения Python пользовательскому потоку?

pip install --no-index --find-links . "C:\Temp\blahblah.whl"

можно использовать вместо этого, поскольку вы должны дать хотя бы одно требование.

8
задан Paweł Hajdan 13 May 2009 в 16:18
поделиться

3 ответа

Попробуйте переназначить warnings.showwarning , т.е.

#!/sw/bin/python2.5

import warnings, sys

def customwarn(message, category, filename, lineno, file=None, line=None):
    sys.stdout.write(warnings.formatwarning(message, category, filename, lineno))

warnings.showwarning = customwarn
warnings.warn("test warning")

перенаправит все предупреждения на стандартный вывод.

15
ответ дан 5 December 2019 в 11:26
поделиться

Я думаю, что что-то вроде этого сработает, хотя это непроверенный код и интерфейс выглядит так, как будто есть более чистый способ, который сейчас ускользает от меня:

import warnings

# defaults to the 'myStringIO' file
def my_warning_wrapper(message, category, filename, lineno, file=myStringIO, line=None):
    warnings.show_warning(message, category, filename, lineno, file, line)    

warnings._show_warning = my_warning_wrapper

Загляните внутрь Lib \ warnings.py. поможет направить вас на верный путь, если этого недостаточно.

0
ответ дан 5 December 2019 в 11:26
поделиться
import sys
import StringIO

sys.stdout = StringIO.StringIO()
0
ответ дан 5 December 2019 в 11:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: