Domanda

Continuo a ricevere questo:

DeprecationWarning: integer argument expected, got float

Come faccio a fare questo messaggio andare via? C'è un modo per evitare gli avvertimenti in Python?

È stato utile?

Soluzione

Dalla documentazione della warnings modulo :

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

Se siete su Windows: passare -W ignore::DeprecationWarning come argomento di Python. Meglio se per risolvere il problema, lanciando a int .

(Si noti che in Python 3.2, warning di deprecazione vengono ignorati per impostazione predefinita.)

Altri suggerimenti

ho avuto questi:

/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

fissi con:

import warnings

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

yourcode()

Ora è ancora ottenere tutte le altre DeprecationWarnings, ma non quelli causati da:

import md5, sha

Si dovrebbe solo risolvere il tuo codice, ma solo nel caso,

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

Ho trovato il modo più pulito per fare questo (in particolare su Windows) è aggiungendo il seguente a C: \ Python26 \ lib \ site-packages \ sitecustomize.py:

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

Si noti che ho dovuto creare questo file. Naturalmente, modificare il percorso di python se differente.

Nessuna di queste risposte ha lavorato per me, così mi post il mio modo per risolvere questo. Io uso il seguente script at the beginning of my main.py e funziona bene.


Utilizza il seguente come è (copia-incolla):

import "blabla"
import "blabla"

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

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

Far passare gli argomenti corretti? : P

Sulla nota più grave, è possibile passare l'argomento -Wi :: DeprecationWarning sulla riga di comando per l'interprete di ignorare i warning di deprecazione.

Converti l'argomento a int. E 'semplice come

int(argument)

Quando si vuole ignorare gli avvertimenti solo a funzioni che si possono fare le seguenti.

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
    ...

Basta aggiungere il decoratore @ignore_warnings sulla funzione che si desidera ignorare tutti gli avvisi

Non per battere in su su di esso, ma vi viene avvertito che quello che stai facendo è probabile che smetterà di funzionare quando si esegue l'aggiornamento successivo pitone. Convertire a int e da fare con esso.

A proposito. È inoltre possibile scrivere il proprio gestore avvertimenti. Basta assegnare una funzione che non fa nulla. Come reindirizzare avvertimenti Python in un flusso personalizzato?

Docker Soluzione

  • Disabilita tutto avvertenze prima di eseguire l'applicazione di pitone
    • È possibile disattivare i test dockerized così
ENV PYTHONWARNINGS="ignore::DeprecationWarning"

Se si sa cosa si sta facendo, un altro modo è semplicemente trovare il file che avvisa l'utente (il percorso del file è mostrato nelle informazioni di avvertimento), commentare le righe che generano gli avvisi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top