webentwicklung-frage-antwort-db.com.de

Python - Modul nicht gefunden

Ich bin ein Anfänger bei Python. Bevor ich anfange, hier meine Python-Ordnerstruktur

-project
----src
------model
--------order.py
------hello-world.py

Unter src habe ich einen Ordner mit dem Namen model, der eine Python-Datei mit dem Namen order.py enthält, deren Inhalt folgt:

class SellOrder(object):
    def __init__(self,genericName,brandName):
        self.genericName = genericName
        self.brandName = brandName

Als nächstes befindet sich mein hello-world.py im src-Ordner, eine Ebene über order.py

import model.order.SellOrder

order = SellOrder("Test","Test")

print order.brandName

Wenn ich python hello-world.py starte, führt dies zu dem Fehler

Traceback (most recent call last):
  File "hello-world.py", line 1, in <module>
    import model.order.SellOrder
ImportError: No module named model.order.SellOrder

Gibt es etwas, was ich vermisst habe?

19
user962206

Alle Module in Python müssen eine bestimmte Verzeichnisstruktur haben. Details finden Sie hier.

Erstellen Sie eine leere Datei mit dem Namen __init__.py im Verzeichnis model, sodass Ihre Verzeichnisstruktur in etwa so aussehen würde:

.
└── project
    └── src
        ├── hello-world.py
        └── model
            ├── __init__.py
            └── order.py

Ändern Sie auch in Ihrer hello-world.py-Datei die Importanweisung wie folgt:

from model.order import SellOrder

Das sollte es beheben :)

P.S .: Wenn Sie Ihr model-Verzeichnis an einem anderen Ort (nicht im selben Verzeichniszweig) ablegen, müssen Sie den Python-Pfad mit sys.path ändern.

20
RafazZ

sie benötigen eine Datei mit dem Namen __init__.py (zwei Unterstriche auf jeder Seite) in jedem Ordner in der Hierarchie, also eine in src/ und eine in model/. Nach diesem Prinzip sucht Python, dass es auf einen bestimmten Ordner zugreifen soll. Die Dateien sollen Initialisierungsanweisungen enthalten, aber selbst wenn Sie sie leer erstellen, wird dies gelöst.

2

Sie müssen sicherstellen, dass das Modul installiert ist alles Versionen von Python

Sie können prüfen, ob ein Modul für Python installiert ist, indem Sie Folgendes ausführen:

pip deinstallieren modulname

Wenn es installiert ist, werden Sie gefragt, ob Sie es löschen möchten oder nicht. Mein Problem war, dass es für Python installiert wurde, aber nicht für Python3. Um zu prüfen, ob ein Modul für Python3 installiert ist, führen Sie Folgendes aus:

python3 -m pip deinstallieren modulname

Wenn Sie feststellen, dass für eine oder beide Versionen kein Modul installiert ist, verwenden Sie diese beiden Befehle, um das Modul zu installieren.

  • pip installieren modulname
  • python3 -m pip installieren modulname
1
Walker Sutton