web-dev-qa-db-de.com

"No name in module" -Fehler von Pylint

Ich habe eine Datei mit dem Namen main.py Mit dem folgenden Code:

#!/usr/bin/env python3

import utils.stuff

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

Im Verzeichnis mit main.py Habe ich ein Unterverzeichnis mit dem Namen utils, das eine Datei mit dem Namen stuff.py Mit folgendem Code enthält:

print("hi from stuff.py")

def foo():
    print("foo")

Wenn ich ./main.py Über die Befehlszeile ausführe, erhalte ich die folgende Ausgabe:

hi from stuff.py
hi from main.py
foo

Genau das erwarte ich. Wenn ich jedoch pylint main.py Ausführe, erhalte ich die folgende Ausgabe:

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)

gefolgt von einigen detaillierteren Statistiken, die für meine Frage nicht relevant erscheinen. Warum passiert das? Was kann ich tun, um Pylint auf utils/stuff.py Aufmerksam zu machen? Ich verwende Python 3.5.2, Pylint 1.6.4 und OS X 10.11.6.

21
Elias Zamaria

Du brauchst einen create utils/__init__.py. Dies macht python auf das Submodul aufmerksam und ermöglicht es Ihnen, jeden Code auszuführen, den Sie beim Importieren ausführen möchten. Wenn Sie nicht möchten, dass etwas ausgeführt wird, fügen Sie einfach einen Docstring hinzu.

23
Jacob Tomlinson

Ich habe diesen Fehler erhalten, als meine Funktion start hieß:

from views import start

Es hat funktioniert, als ich den Namen der Funktion geändert habe.

0
user984003