Как отключить предупреждения python
Я работаю с кодом с бросками много (для меня на данный момент) бесполезных предупреждений с помощью warnings
библиотека. Чтение (/сканирование) документации я только нашел способ отключить предупреждения для отдельных функций. Но я не хочу менять так много кода.
может быть, флаг, как python -no-warning foo.py
?
что бы вы порекомендовали?
6 ответов:
здесь опции-W.
python -W ignore foo.py
вы смотрели на отключить предупреждения раздел документов python?
Если вы используете код, который, как вы знаете, вызовет предупреждение, такое как устаревшая функция, но не хотите видеть предупреждение, то можно подавить предупреждение с помощью контекстного менеджера catch_warnings:
import warnings def fxn(): warnings.warn("deprecated", DeprecationWarning) with warnings.catch_warnings(): warnings.simplefilter("ignore") fxn()
Я не потворствую этому, но вы могли бы просто переплюнуть все предупреждения с этим:
import warnings warnings.filterwarnings("ignore")
Ex:
>>> import warnings >>> def f(): ... print('before') ... warnings.warn('you are warned!') ... print('after') >>> f() before __main__:3: UserWarning: you are warned! after >>> warnings.filterwarnings("ignore") >>> f() before after
вы также можете определить переменную среды (новая функция в 2010 году - т. е. python 2.7)
export PYTHONWARNINGS="ignore"
Это старый вопрос, но есть некоторые новые ориентиры в PEP 565 чтобы отключить все предупреждения, если вы пишете приложение python, вы должны использовать:
import sys import warnings if not sys.warnoptions: warnings.simplefilter("ignore")
причина, по которой это рекомендуется, заключается в том, что он отключает все предупреждения по умолчанию, но принципиально позволяет им снова включаться через
python -W
в командной строке илиPYTHONWARNINGS
.
предупреждения выводятся через stderr, и простым решением является добавление '2> /dev/null' к CLI. это имеет большой смысл для многих пользователей, таких как centos 6, которые застряли с зависимостями python 2.6 (например, yum), и различные модули подталкиваются к краю вымирания в их покрытии.
Это особенно верно для криптографии с участием SNI и так далее. можно обновить 2.6 для обработки HTTPS с помощью proc на: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
предупреждение все еще на месте, но все, что вы хотите, обратно портировано. перенаправление stderr оставит вас с чистым выводом терминала / оболочки, хотя само содержимое stdout не изменяется.
отвечая на FriendFX. предложение 1 (1) непосредственно отвечает на проблему универсальным решением. предложение два (2) учитывает цитируемый якорь re "отключить предупреждения", который является ли python 2.6 конкретным и отмечает, что пользователи RHEL/centos 6 не могут напрямую обойтись без 2.6. хотя никаких конкретных предупреждений не было приведено, пункт 2 (2) отвечает на вопрос 2.6 я чаще всего получаю re недостатки в модуле криптографии и как можно "модернизировать" (т. е. обновить, backport, исправить) производительность HTTPS/TLS python. в пункте 3 (3) просто объясняется результат использования переориентации и обновления модуля/зависимостей.