Ich weiß, dass dieser Thread ein bisschen alt ist, aber ich habe einige Zeit gebraucht, um auf den Punkt zu kommen, also wollte ich ihn teilen.
In meinem Projekt hatte ich das Hauptskript in einem übergeordneten Verzeichnis und zur Unterscheidung der Module habe ich alle unterstützenden Module in einem Unterordner namens "modules" abgelegt. In meinem Hauptskript importiere ich diese Module wie folgt (für ein Modul namens report.py):
from modules.report import report, reportError
Wenn ich mein Hauptskript aufrufe, funktioniert dies. Ich wollte jedoch jedes Modul testen, indem ich ein main()
in jedes einfügte und jedes direkt aufrief, als:
python modules/report.py
Jetzt beschwert sich Python, dass es "ein Modul namens Module" nicht finden kann. Der Schlüssel hier ist, dass Python standardmäßig den Ordner des Skripts in seinen Suchpfad einfügt, ABER NICHT DAS CWD. Dieser Fehler besagt also wirklich "Ich kann keinen Modul-Unterordner finden". Dies liegt daran, dass es kein Unterverzeichnis "modules" aus dem Verzeichnis gibt, in dem sich das Modul report.py befindet.
Ich finde, dass die beste Lösung dafür darin besteht, das CWD im Python-Suchpfad anzuhängen, indem Sie dies oben einfügen:
import sys
sys.path.append(".")
Jetzt durchsucht Python das CWD (aktuelles Verzeichnis), findet den Unterordner "modules" und alles ist in Ordnung.