次のコードを持つmain.py
という名前のファイルがあります。
#!/usr/bin/env python3
import utils.stuff
if __name__ == "__main__":
print("hi from main.py")
utils.stuff.foo()
main.py
を含むディレクトリには、stuff.py
という名前のファイルとutils
という名前のサブディレクトリがあり、次のコードが含まれています。
print("hi from stuff.py")
def foo():
print("foo")
コマンドラインから./main.py
を実行すると、次の出力が得られます。
hi from stuff.py
hi from main.py
foo
それはまさに私が期待していることです。ただし、pylint main.py
を実行すると、次の出力が得られます。
No config file found, using default configuration
************* Module main
C: 1, 0: Missing module docstring (missing-docstring)
E: 3, 0: No name 'stuff' in module 'utils' (no-name-in-module)
E: 3, 0: Unable to import 'utils.stuff' (import-error)
E: 7, 4: Module 'utils' has no 'stuff' member (no-member)
その後に、私の質問に関係ないと思われるより詳細な統計がいくつか続きます。なぜこうなった? Pylintにutils/stuff.py
を認識させるにはどうすればよいですか?私はPython 3.5.2、Pylint 1.6.4およびOS X 10.11.6を実行しています。
Create utils/__init__.py
が必要です。これにより、pythonサブモジュールが認識されるようになります。また、インポート時に実行するコードを実行できます。何も実行したくない場合は、docstringを含めるだけです。
関数の名前がstartのときにこのエラーが発生しました
from views import start
関数の名前を変更すると機能しました。