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.
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.
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.