2016-05-20 15 views
5

Recentemente ho aggiornato il pacchetto Numpy di Python su una delle mie macchine, ea quanto pare ho fatto affidamento su a deprecated feature of numpy per un po 'di tempo:Perché non vedo Numepy's DeprecationWarning?

>>> np.__version__ 
'1.10.4' 
>>> a = np.ones(10, dtype=np.uint16) 
>>> a /= 0.5 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: ufunc 'true_divide' output (typecode 'd') could not be coerced to provided output parameter (typecode 'H') according to the casting rule ''same_kind'' 

Uno dei commentatori nel link qui sotto indicate:

probabilmente significa non avete visto i warning di deprecazione da sempre ;)

... che è corretto, non l'ho fatto.

Ma perché? Come sono riuscito a saltare l'avvertimento di deprecazione?

Coerentemente con the documentation, questo stesso codice ha lavorato in modo diverso nel mio precedente versione NumPy:

>>> np.__version__ 
'1.9.2' 
>>> a = np.ones(10, dtype=np.uint16) 
>>> a /= 0.5 
>>> a 
array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2], dtype=uint16) 

... ma non dovrebbe questo trigger un avvertimento? Ho frainteso quanto numpy gestisce gli avvisi di deprecazione? Come posso essere sicuro di non mancare altri avvisi di deprecazione?

Il mio ambiente di pitone:

Python 3.5.1 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)] on win32 
+1

vengono ignorati per default – wim

risposta

6

DeprecationWarnings sono ignored by default. È necessario per consentire loro, sia eseguendo Python con il -Wd flag:

python -Wd my_source_file.py 

o installando una specifica filtro nuovo avvertimento che sostituisce quello per ignorare DeprecationWarning:

import warnings 

# Print any warning the first time a given source line issues them, 
# overriding built-in filters that ignore some warning types. 
warnings.filterwarnings("default") 
+0

Gesù, buono a sapersi. Grande buco nella mia educazione, grazie per averlo sistemato. – Andrew

+1

hey grazie mille per questo. selvatico. penso che tu intendessi "warnings.filterwarnings" (plurale) non "warnings.filterwarning" –

+0

@MaxPower: Whoops! Fisso. – user2357112

Problemi correlati