このことを考慮:
>>> import warnings
>>> warnings.filterwarnings("always", category=DeprecationWarning)
>>> warnings.warn("Hello", DeprecationWarning)
/usr/bin/bpython:2: DeprecationWarning: Hello
OKはそこで警告を受けました。
>>> warnings.filterwarnings("ignore", category=DeprecationWarning)
>>> warnings.warn("Silence", DeprecationWarning)
ここでは警告はありません。
>>> warnings.filterwarnings("always", category=DeprecationWarning)
>>> warnings.warn("Silence", DeprecationWarning) # why remain silent?
>>>
ここでは警告はありませんが、表示されるすべての警告が表示されるはずです。Python 2 と 3 の両方で「無視」フィルタを削除すると、同じことが起こります。
原則としてこれは問題にはなりませんが (別の理由がない限り)、私はこのサイレンシング警告をいつの間にかどこかで作成しています。これにより、特定の警告コンテキスト内で警告が制御されていることを確認することが難しくなります。
注:スクリプト内では、この例は正常に機能します。ただし、私の元の問題はおそらくこの例に似ているだけなので、対話型プロンプトだけに限定されているとは思えません。warnings.filters
元の問題では、最初のフィルターが「常に」と一致する必要があるにもかかわらず、警告が表示されません(私はそれを確認しました)。