Как игнорировать предупреждения об отказе в Python

Я продолжаю получать следующее:

DeprecationWarning: integer argument expected, got float

Как мне удалить это сообщение? Есть ли способ избежать предупреждений в Python?

Ответ 1

Из документации модуля warnings:

 #!/usr/bin/env python -W ignore::DeprecationWarning

Если вы находитесь в Windows: передайте -W ignore::DeprecationWarning в качестве аргумента для Python. Лучше хотя бы решить проблему, выбрав int.

(Обратите внимание, что в Python 3.2 предупреждения по умолчанию игнорируются по умолчанию.)

Ответ 2

У меня были следующие:

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/persisted/sob.py:12:
DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, md5, sys

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/python/filepath.py:12:
DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha

Исправлено:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=DeprecationWarning)
    import md5, sha

yourcode()

Теперь вы все еще получаете все остальные DeprecationWarning s, но не те, которые вызваны:

import md5, sha

Ответ 3

Вы должны просто исправить свой код, но на всякий случай,

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 

Ответ 4

Я нашел самый чистый способ сделать это (особенно в Windows), добавив следующее в C:\Python26\Lib\site-packages\sitecustomize.py:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

Обратите внимание, что мне пришлось создать этот файл. Конечно, измените путь к python, если ваш отличается.

Ответ 5

Ни один из этих ответов не работал для меня, поэтому я опубликую свой способ, чтобы решить эту проблему. Я использую следующий скрипт at the beginning of my main.py, и он отлично работает.


Используйте следующее как есть (скопируйте и вставьте его):

import "blabla"
import "blabla"

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

# more code here...
# more code here...

Ответ 6

Передайте правильные аргументы?: P

В более серьезной заметке вы можете передать аргумент -Wi:: DeprecationWarning в командной строке интерпретатору, чтобы игнорировать предупреждения об отказе.

Ответ 7

Преобразовать аргумент в int. Это так же просто, как

int(argument)

Ответ 8

Если вы хотите игнорировать предупреждения только в функциях, вы можете сделать следующее.

import warnings
from functools import wraps


def ignore_warnings(f):
    @wraps(f)
    def inner(*args, **kwargs):
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("ignore")
            response = f(*args, **kwargs)
        return response
    return inner

@ignore_warnings
def foo(arg1, arg2):
    ...
    write your code here without warnings
    ...

@ignore_warnings
def foo2(arg1, arg2, arg3):
    ...
    write your code here without warnings
    ...

Просто добавьте декоратор @ignore_warnings в функцию, которую вы хотите игнорировать все предупреждения

Ответ 9

Docker Solution

  • Отключите ВСЕ предупреждения перед запуском приложения python
    • Вы также можете отключить ваши докеризированные тесты
ENV PYTHONWARNINGS="ignore::DeprecationWarning"

Ответ 10

Если вы знаете, что делаете, другой способ - просто найти файл, который предупреждает вас (путь к файлу указан в информации о предупреждении), прокомментируйте строки, которые генерируют предупреждения.

Ответ 11

Не избивать вас, но вас предупреждают, что то, что вы делаете, скорее всего, перестанет работать, когда вы будете обновлять python. Преобразуйте в int и сделайте с ним.

BTW. Вы также можете написать свой собственный обработчик предупреждений. Просто назначьте функцию, которая ничего не делает. Как перенаправить предупреждения python в пользовательский поток?