Ошибка" нет имени в модуле " из Pylint

у меня есть файл с именем main.py следующий код:

#!/usr/bin/env python3

import utils.stuff

if __name__ == "__main__":
    print("hi from main.py")
    utils.stuff.foo()

в каталоге с main.py, у меня есть подкаталог с именем utils, который содержит файл с именем stuff.py следующий код:

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.

1 ответов


вам нужно создать utils/__init__.py. Это позволит python узнать о подмодуле, а также позволяет запускать любой код, который вы хотите выполнить при импорте. Если вы не хотите ничего запускать, просто включите docstring.