Lösen Sie ModuleNotFoundError in Python

Olorunfemi Akinlua 21 Juni 2023
  1. Verwenden Sie den korrekten Modulnamen, um ModuleNotFoundError in Python zu lösen
  2. Verwenden Sie die korrekte Syntax, um ModuleNotFoundError in Python zu lösen
Lösen Sie ModuleNotFoundError in Python

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 Akinlua avatar Olorunfemi Akinlua avatar

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.

LinkedIn

Verwandter Artikel - Python ModuleNotFoundError

Verwandter Artikel - Python Error