So unterdrücken Sie eine Warnung eines Drittanbieters mit warnings.filterwarnings
Ich verwende Paramiko in meinem Python-Code (für SFTP). Alles funktioniert einwandfrei, außer dass ich jedes Mal eine Paramiko-Funktion importiere oder aufrufe. Diese Warnung würde erscheinen:
C:\Python26\lib\site-packages\Crypto\Util\randpool.py:40: RandomPool_Deprecation
Warning: This application uses RandomPool, which is BROKEN in older releases. S
ee http://www.pycrypto.org/randpool-broken
RandomPool_DeprecationWarning)
Ich weiß, dass dies damit zusammenhängt, dass Paramiko einige veraltete Funktionen von PyCrypto verwendet.
Meine Frage ist, gibt es eine Möglichkeit, diese Warnung programmgesteuert zu unterdrücken? Ich habe es versucht:
warnings.filterwarnings(action='ignore', \
category=DeprecationWarning, module='paramiko')
und sogar das:
warnings.filterwarnings(action='ignore', \
category=DeprecationWarning, module='randpool')
before 'import paramiko' Anweisung und vor paramiko-spezifischen Funktionsaufrufen, aber nichts funktioniert. Diese Warnung wird immer wieder angezeigt, egal was passiert. Wenn es hilft, ist hier der Code in der Bibliothek eines Drittanbieters, der die Warnung ausgibt:
in randpool.py
from Crypto.pct_warnings import RandomPool_DeprecationWarning
import Crypto.Random
import warnings
class RandomPool:
"""Deprecated. Use Random.new() instead.
See http://www.pycrypto.org/randpool-broken
"""
def __init__(self, numbytes = 160, cipher=None, hash=None, file=None):
warnings.warn("This application uses RandomPool, which is BROKEN in older releases. See http://www.pycrypto.org/randpool-broken",
RandomPool_DeprecationWarning)
Wenn Sie sich damit auskennen, helfen Sie mir bitte, diese Warnung auszuschalten.