web-dev-qa-db-ja.com

python initのpep8クラスがインポートされましたが使用されていません

python python flake8 ライブラリを使用して)でPEP8チェックを実行しています。1つの__init__.pyファイルにimportステートメントがあります。このような私のサブモジュールの:

from .my_class import MyClass

Initファイルにこの行がある理由は、from somemodule import MyClassを記述する代わりに、サブモジュールからMyClassをfrom somemodule.my_class import MyClassとしてインポートできるようにするためです。

PEP8違反を修正しながらこの機能を維持できるかどうか知りたいのですが。

36
Salvius

これは実際にはPEP8違反ではありません。私は単にこれを行います:

from .my_class import MyClass  # noqa

編集:もう1つの可能性は、__all__を使用することです。その場合、flake8は何が起こっているのかを理解します。

from .my_class import MyClass

__all__ = ['MyClass',]
62

PEP 8 によると、MyClass__all__ 、インポートされたが使用されていない問題も修正します。

イントロスペクションをより適切にサポートするには、モジュールは__all__属性を使用して、パブリックAPIで名前を明示的に宣言する必要があります。

14
Mihai Capotă

flake8のドキュメント によると、この特定の警告をインラインで無視できます:

from .my_class import MyClass  # noqa: F401

参考までに、ここにflake8の エラーコード を示します。

0
Mike T