web-dev-qa-db-ja.com

Pylintからの「モジュールに名前がありません」エラー

次のコードを持つ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を実行しています。

21
Elias Zamaria

Create utils/__init__.pyが必要です。これにより、pythonサブモジュールが認識されるようになります。また、インポート時に実行するコードを実行できます。何も実行したくない場合は、docstringを含めるだけです。

23
Jacob Tomlinson

関数の名前がstartのときにこのエラーが発生しました

from views import start

関数の名前を変更すると機能しました。

0
user984003