Почему я не вижу предупреждения Numpy's Deprecation?
Недавно я обновил пакет Python Numpy на одной из моих машин, и, по-видимому, уже некоторое время полагаюсь на устаревшую функцию numpy:
>>> 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''
Один из комментаторов в приведенной выше ссылке указал:
Вероятно, означает, что вы не видели предупреждения об устаревании с тех пор навсегда;)
... что правильно, я не сделал.
Но почему? Как мне удалось пропустить предупреждение об устаревании?
В соответствии с документацией этот код работал по-другому в моей предыдущей версии:
>>> 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)
... но не должно ли это вызвать предупреждение? Я неправильно понимаю, как NumPy обрабатывает предупреждения об устаревании? Как я могу быть уверен, что не пропущу другие предупреждения об устаревании?
Моя среда Python:
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 ответ
DeprecationWarnings по умолчанию игнорируются. Вам нужно включить их, запустив Python с -Wd
флаг:
python -Wd my_source_file.py
или установив новую спецификацию фильтра предупреждений, которая переопределяет игнорируемую 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")