Python relativer Import

Sie können Pakete relativ innerhalb eines Python-Projekts importieren. Wenn Sie beim relativen Importieren eines Pakets einen Fehler machen, wird der Fehler Beyond Top Level Package Error beim relativen Import angezeigt.

In dieser Anleitung sind wir diskutieren, was dieser Fehler bedeutet und warum er ausgelöst wird. Wir werden ein Beispiel fur diesen Fehler durchgehen, damit Sie lernen, wie Sie erfolgreich eine relative Importanweisung in Ihrem Projekt schreiben.

√úber den Paketfehler der obersten Ebene beim relativen Import hinaus

Ein relativer import verwendet den Namen eines Moduls, um seinen Speicherort zu bestimmen.

Betrachten Sie den folgenden relativen Import:

Dadurch wird die "App‚" Python-Modul aus dem Verzeichnis oberhalb des Ordners, in dem das Programm mit dieser Importanweisung geschrieben ist.

Sagen wir das diese Datei hie√ü "program.py‚" und war in einem Ordner namens "app‚" enthalten. Unser Hauptprojekt hei√üt "Kuchen‚". Unsere Dateistruktur wurde so aussehen:

Wenn wir das "program.py‚" Datei sieht Python unsere Importanweisung als:

Wir importieren aus dem "Programm‚" Ordner statt aus unserem aktuellen Arbeitsverzeichnis (dem Ordner, den wir anzeigen).

81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten. Lassen Sie sich noch heute in ein Bootcamp einweisen.

Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.

Das liegt daran, dass "Programm&rdquo ; ist zwei Verzeichnisse hinter dem, das wir anzeigen. Die __init__.py-Dateien teilen Python mit, dass wir mit unseren eigenen Python-Paketen arbeiten. Diese Datei ist in beiden Fällen leer.

Ihre Programme mussen diese Struktur verwenden, andernfalls wird ein Fehler angezeigt.

Ein Beispielszenario

Wir haben ein Projekt namens "Kuchen‚" die die Aussage ‚ÄûIch mag Kuchen!‚" zur Konsole. Dieses Projekt wird komplizierter, daher verwenden wir Module, um unseren Code aufzuteilen.

Die Dateistruktur fur unser Projekt sieht so aus:

Dieser Code befindet sich in einem Ordner namens "cake&rdquo ;. In unserer app.py-Datei haben wir eine Anweisung, die unsere program.py-Datei importiert:

Dies ist eine Standard-Import-Anweisung. In der Datei app/program.py haben wir eine relative Import-Anweisung:

Dieser Code importiert die Datei "printer‚" aus dem Verzeichnis uber app/. Das Verzeichnis uber app/ ist das Hauptverzeichnis fur ou r-Projekt.

Unsere Datei printer.py enthält eine Druckanweisung:

Lassen Sie’ s Versuchen Sie, unser Programm auszufuhren, um zu sehen, ob es funktioniert. Wir werden unsere app.py-Datei ausfuhren, da sie die Hauptdatei fur unser Projekt ist:

Wenn wir diese Datei ausfuhren, sehen wir die folgende Meldung:

Unsere Datei program.py kann unseren "Drucker‚" Modul.

Die Lösung

Wir versuchen, "Drucker‚" in unser "App.Programm‚" Datei. Dies ist ein Problem, da "Drucker‚" selbst ist nicht in einem Paket. Relative Importe funktionieren nur innerhalb von Paketen.

Um dieses Problem zu l√∂sen, mussen wir die Verzeichnisstruktur unseres Projekts √§ndern. Wir mussen unseren "Drucker‚" Datei und unsere "App‚" Ordner in ein eigenes Verzeichnis, sodass "Drucker‚" ist in einem Paket. Dadurch k√∂nnen wir auf unseren "Drucker‚" Datei in der "App‚" Ordner.

Wir können unsere Datei app.py im aktuellen Verzeichnis belassen, da sie auf unsere Unterverzeichnisse verweist.

Lass uns alle unsere Dateien verschieben, ohne app.py, in einen neuen Ordner:

Alle unsere Projektdateien au√üer app.py befinden sich in einem neuen Ordner namens "cake&rdquo ;. Wir mussen unsere app.py-Datei so √§ndern, dass wir auf den "Kuchen‚" module:

Dadurch wird das "Programm‚" Datei, die sich im Verzeichnis cake/app befindet.

Da sich unsere Datei printer.py nun in einem eigenen Paket befindet, sollten wir unser Projekt erfolgreich ausfuhren können. program.py sollte auf printer.py zugreifen können, da beide Dateien sind in einem Paket.

"Karma-Karriere trat in mein Leben ein, als ich es am dringendsten brauchte und half mir schnell bei einem Bootcamp. Zwei Monate nach meinem Abschluss habe ich meinen Traumjob gefunden, der meinen Werten und Lebenszielen entspricht!"

Venus, Software Engineer bei Rockbot

Lassen Sie unseren Code ausfuhren und sehen, was passiert:

Unser Programm druckt erfolgreich die Nachricht "I like cake!‚" an die Konsole. Diese Nachricht ist in printer.py definiert, wie wir bereits erw√§hnt haben.

Dies sagt uns, dass unsere Datei program.py die Datei printer.py erfolgreich importieren konnte. Als wir die Datei importierten, wurde ihr Inhalt ausgefuhrt.

Schlussfolgerung

Die beyond top level package error in relative import tritt auf, wenn Sie einen relativen Import verwenden, ohne dass die zu importierende Datei Teil eines Pakets ist. Um diesen Fehler zu beheben, stellen Sie sicher, dass alle Verzeichnisse, die Sie relativ importieren, in ihre eigenen Pakete.

Du hast jetzt die Ressourcen, die du dafur benötigst Lebe diesen häufigen Python-Fehler wie ein Profi!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method