Lösen Sie ModuleNotFoundError in Python
-
Verwenden Sie den korrekten Modulnamen, um
ModuleNotFoundError
in Python zu lösen -
Verwenden Sie die korrekte Syntax, um
ModuleNotFoundError
in Python zu lösen
Module sind wichtig für die Entwicklung von Python-Programmen. Mit Modulen können wir verschiedene Teile einer Codebasis zur einfacheren Verwaltung trennen.
Bei der Arbeit mit Modulen ist es wichtig zu verstehen, wie sie funktionieren und wie wir sie in unseren Code importieren können. Ohne dieses Verständnis oder diese Fehler können verschiedene Fehler auftreten.
Ein Beispiel für einen solchen Fehler ist ModuleNotFoundError
. In diesem Artikel werden wir diskutieren, wie ModuleNotFoundError
in Python behoben werden kann.
Verwenden Sie den korrekten Modulnamen, um ModuleNotFoundError
in Python zu lösen
Lassen Sie uns eine einfache Python-Codebasis mit zwei Dateien erstellen, index.py
und file.py
, wobei wir file.py
in die Datei index.py
importieren. Beide Dateien befinden sich im selben Verzeichnis.
Die Datei file.py
enthält den folgenden Code.
class Student:
def __init__(self, firstName, lastName):
self.firstName = firstName
self.lastName = lastName
Die Datei index.py
enthält den folgenden Code.
import fiIe
studentOne = fiIe.Student("Isaac", "Asimov")
print(studentOne.lastName)
Lassen Sie uns nun index.py
ausführen. Die Ausgabe unserer Codeausführung ist unten.
Traceback (most recent call last):
File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>
import fiIe
ModuleNotFoundError: No module named 'fiIe'
Wir haben einen ModuleNotFoundError
. Wenn Sie genau hinsehen, werden Sie feststellen, dass die Importanweisung einen Tippfehler enthält, bei dem Datei
als Datei
geschrieben wird, wobei das l
durch ein großes I
ersetzt wird.
Wenn wir also den falschen Namen verwenden, kann uns ein ModuleNotFoundError
zugeworfen werden. Seien Sie vorsichtig, wenn Sie Ihre Modulnamen schreiben.
Lassen Sie es uns jetzt korrigieren und unseren Code ausführen.
import file
studentOne = file.Student("Isaac", "Asimov")
print(studentOne.lastName)
Die Ausgabe des Codes:
Asimov
Außerdem könnten wir die import
-Anweisung mit dem from
-Schlüsselwort und import
nur die Student
-Klasse umschreiben. Dies ist nützlich, wenn wir nicht alle Funktionen, Klassen und Methoden importieren möchten, die im Modul vorhanden sind.
from file import Student
studentOne = Student("Isaac", "Asimov")
print(studentOne.lastName)
Wir erhalten die gleiche Ausgabe wie beim letzten Mal.
Verwenden Sie die korrekte Syntax, um ModuleNotFoundError
in Python zu lösen
Wir können einen ModuleNotFoundError
erhalten, wenn wir beim Importieren eines anderen Moduls die falsche Syntax verwenden, insbesondere wenn mit Modulen in einem separaten Verzeichnis gearbeitet wird.
Erstellen wir eine komplexere Codebasis mit demselben Code wie im letzten Abschnitt, jedoch mit einigen Erweiterungen. Um diese Codebasis zu erstellen, benötigen wir die untenstehende Projektstruktur.
Project/
data/
file.py
welcome.py
index.py
Mit dieser Struktur haben wir ein data
-Paket, das die Module file
und welcome
enthält.
In der Datei file.py
haben wir den folgenden Code.
class Student:
def __init__(self, firstName, lastName):
self.firstName = firstName
self.lastName = lastName
In welcome.py
haben wir den folgenden Code.
def printWelcome(arg):
return "Welcome to " + arg
Die index.py
enthält Code, der versucht, file
und welcome
zu importieren, und verwendet die Klasse Student
und die Funktion printWelcome
.
import data.welcome.printWelcome
import data.file.Student
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
Die Ausgabe beim Ausführen von index.py
:
Traceback (most recent call last):
File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>
import data.welcome.printWelcome
ModuleNotFoundError: No module named 'data.welcome.printWelcome'; 'data.welcome' is not a package
Der Code hat versucht, die Funktion printWelcome
und die Klasse Student
mit dem Punktoperator direkt zu importieren, anstatt das Schlüsselwort from
oder die __init__.py
für einfache Bindung für Untermodule zu verwenden. Dadurch werden wir mit einem ModuleNotFoundError
beworfen.
Lassen Sie uns die korrekte Syntax der import
-Anweisung verwenden, um ModuleNotFoundError
zu verhindern und die Funktion und Klasse direkt zu importieren.
from data.file import Student
from data.welcome import printWelcome
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
Die Ausgabe des Codes:
Welcome to Lagos
Isaac
Wir können die Module (file
und welcome
) innerhalb des data
-Pakets an seinen übergeordneten Namensraum binden. Dazu benötigen wir die Datei __init__.py
.
In die Datei __init__.py
importieren wir alle Module und ihre Funktionen, Klassen oder Objekte innerhalb des Pakets, um eine einfache Verwaltung zu ermöglichen.
from .file import Student
from .welcome import printWelcome
Jetzt können wir unsere index.py
prägnanter und mit guter Anbindung an den übergeordneten Namensraum data
schreiben.
from data import Student, printWelcome
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
Die Ausgabe entspricht der letzten Codeausführung.
Um die Fehlermeldung ModuleNotFoundError
zu vermeiden, stellen Sie sicher, dass Sie keine falsche import
-Anweisung oder Tippfehler haben.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedInVerwandter Artikel - Python ModuleNotFoundError
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung