2

サードパーティのオープン ソース ツールを使用すると、次の警告が生成されます。

DeprecationWarning: The compiler package is deprecated and removed in Python 3.x.

サードパーティのコードを変更せずにこの警告を抑制するにはどうすればよいですか?

使用方法は知っていますwarnings.filter()が、使用できません。py.testコマンド ラインから呼び出すため、警告が作成される前にコードのソース コード行が 1 行も実行されません。

コンソール スクリプトの周りにラッパーを作成することはできません。

4

1 に答える 1

3

usercustomizeを呼び出すまたはsitecustomizeモジュールを追加できますwarnings.filter()。インタープリターの開始時にロードされます。

カスタマイズ モジュールを参照してください。

Python には、カスタマイズできるように 2 つのフックが用意されています:sitecustomizeusercustomize. それがどのように機能するかを確認するには、まずユーザーの site-packages ディレクトリの場所を見つける必要があります。Python を起動して、次のコードを実行します。

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python2.7/site-packages'

これで、そのディレクトリに名前が付けられたファイルを作成し、usercustomize.pyその中に必要なものを入れることができます。-s自動インポートを無効にするオプションで開始されない限り、Python のすべての呼び出しに影響します。

sitecustomizeは同じように機能しますが、通常はコンピュータの管理者によってグローバル サイト パッケージ ディレクトリに作成され、 の前にインポートされusercustomizeます。site詳細については、モジュールのドキュメントを参照してください。

PYTHONUSERBASE環境変数で Python が参照する場所に影響を与えることができるため、パスがベースに追加されるusercustomize.pyことを考慮に入れれば、ここでPython をプロジェクトごとのファイルにポイントできます。lib/python/site-packages

$ python -m site --user-site
/Users/someuser/Library/Python/2.7/lib/python/site-packages
$ PYTHONUSERBASE=/foo/bar python -m site --user-site
/foo/bar/lib/python/site-packages

上記の例では、 にPYTHONUSERBASE設定すると/foo/bar、Python が/foo/bar/lib/python/site-packages/usercustomize.py存在する場合はロードされます。

Python virtualenv では、Python 2.6 より前site.pyの に基づくカスタマイズされたファイルが使用されます。site.pyこのバージョンではgetusersitepackages()関数が省略されています。ファイルlib/pythonX.X/no-global-site-packages.txtが存在する場合、usercustomizeモジュールはインポートされません。代わりに、仮想環境ディレクトリ内のファイルsitecustomize.pyを使用する必要があります。lib/python/site-packages

于 2014-07-04T10:55:14.237 に答える