2016-12-06 10 views
1

、私は1つのサードパーティのライブラリをインポートするとき、私はコンソールでこの警告を得るに抑制することができません:IMPモジュールはのimportlibの賛成で廃止されました非推奨の警告私のDjangoアプリケーションで

を。代わりの使用のためのモジュールのドキュメントを参照してください

しかし、私はPythonシェル内でインポートを行う場合、すべてが大丈夫です。私はDjangoで同じ動作を実現したい。

import warnings 
from django.utils.deprecation import RemovedInDjango110Warning 
warnings.filterwarnings(action="ignore", category=RemovedInDjango110Warning) 

上記のコードの結果がRemovedInDjango110Warningが存在しないと言う別のエラーメッセージ、に:これは私が他のOSのスレッドで回答に基づいて試してみたものです。私もこれを試した:

import warnings 

def fxn(): 
    warnings.warn("deprecated", DeprecationWarning) 

with warnings.catch_warnings(): 
    warnings.simplefilter("ignore") 
    fxn() 

from third_party_lib import some_module 

しかし、私は非常に同じエラーメッセージが表示されます。だから、この問題に対する以前の答えはすべて古くなったようです。そして、我々はいくつかの新鮮な修正が必要です。ありがとう!

import warnings 

with warnings.catch_warnings(): 
    warnings.filterwarnings("ignore",category=DeprecationWarning) 
    from third_party_lib import some_module 

しかし、それは効果がありません:

私もこれを試してみました。

+0

なぜそれをしたいですか?代わりにimportlibを使うのですか? – user312016

+1

全体の話はimportlibに関するものではありません。私はいくつかのライブラリを使用しています。おそらくどこかでimpを使用しています。そして実際には私はこのライブラリに触れたくありません – Jacobian

+0

Pythonシェルでデフォルトで行われるように警告を抑制したいだけです – Jacobian

答えて

3

あなたが試したコードにはいくつかの問題があります。 PendingDeprecationWarningをフィルタリングする場合は、コードにPendingDeprecationWarningを使用する必要があります。あなたのコードはDeprecationWarningRemovedInDjango110Warningを使用していますが、これは異なる警告です。次に、文書内のfxn()関数は、警告を生成する関数の例です。それをコードに含めることは意味がありません。

あなたはしかし、これはあなたが修正する必要があり、独自のコードで保留中の非推奨を隠す可能性があるすべての保留中の非推奨の警告

import warnings 
warnings.simplefilter("ignore", category=PendingDeprecationWarning) 

をフィルタリングすることができます。より良いアプローチは、サードパーティ製のlibをインポートするときに警告をフィルタするために、コンテキストマネージャを使用することです。

with warnings.catch_warnings(): 
    warnings.simplefilter("ignore", category=PendingDeprecationWarning) 
    from third_party_lib import some_module 
+0

ありがとうございました!できます! – Jacobian

関連する問題