


Warum schlagen relative Importe in Python 3 fehl und wie kann ich sie beheben?
Relative Importe in Python 3: Die mysteriösen Fehler
In Python 3 sind relative Importe eine bequeme Möglichkeit, Module aus demselben heraus zu importieren Verzeichnis. Allerdings tritt häufig ein unerwarteter Fehler auf:
Fehlermeldungen:
- ImportError: versuchter relativer Import ohne bekanntes übergeordnetes Paket
- ModuleNotFoundError: Kein Modul mit dem Namen „mymodule“
- SystemError: Parent module '' nicht geladen, Relativer Import kann nicht durchgeführt werden
Die Grundursache:
Um diese Fehler zu verstehen, müssen wir uns mit dem Modulimportmechanismus von Python befassen. Relative Importe erfordern, dass das importierende Modul in einem Paket enthalten ist. Ein Paket ist ein Verzeichnis, das durch das Vorhandensein einer __init__.py-Datei als Paket gekennzeichnet ist.
Gemeinsames Layout:
Pakete haben häufig die folgende Struktur:
main.py mypackage/ __init__.py mymodule.py myothermodule.py
Beispiel Code:
- mymodule.py
# Exported function def as_int(a): return int(a) # Test function for module def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()
- myothermodule.py
# Exported function def add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()
- main.py
from mypackage.myothermodule import add def main(): print(add('1', '1')) if __name__ == '__main__': main()
Wenn Sie main.py ausführen oder mypackage/mymodule.py, alles funktioniert reibungslos. Das Ausführen von mypackage/myothermodule.py schlägt jedoch aufgrund des relativen Imports fehl:
from .mymodule import as_int
Die Lösung:
Wie Guido van Rossum erklärt, liegt dieser Fehler an Python behandelt laufende Skripte innerhalb eines Pakets als Antimuster. Die empfohlene Lösung besteht darin, relative Importe zu vermeiden und stattdessen absolute Importe zu verwenden:
from mypackage.mymodule import as_int
Alternative Ansätze:
Wenn Sie immer noch relative Importe bevorzugen, können Sie Folgendes verwenden: m-Option, um das zu importierende Modul anzugeben, aber es kann ausführlich und unpraktisch sein:
python3 -m mypackage.myothermodule
Eine andere Alternative ist die Manipulation PYTHONPATH, um das übergeordnete Verzeichnis des Pakets einzuschließen:
import sys import os SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(SCRIPT_DIR)) from mypackage.mymodule import as_int
Das obige ist der detaillierte Inhalt vonWarum schlagen relative Importe in Python 3 fehl und wie kann ich sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

ToAppendElementStoapythonList, UsTheAppend () methodForsingleElelements, Extend () FormultipleElements, und INSERSt () FORSPECIFIFICEPosition.1) UseAppend () ForaddingOneElementattheend.2) usextend () toaddmultiElementsefficction.3) useInsert () toaddanelementataspeci

TocreateApythonList, usequarebrackets [] andsparateItemswithcommas.1) ListaredynamicandcanholdmixedDatatypes.2) UseAppend (), REME () und SSLICINGFORMIPLUMILATION.3) LISTCOMPRAUMENS

In den Bereichen Finanzen, wissenschaftliche Forschung, medizinische Versorgung und KI ist es entscheidend, numerische Daten effizient zu speichern und zu verarbeiten. 1) In der Finanzierung kann die Verwendung von Speicherzuordnungsdateien und Numpy -Bibliotheken die Datenverarbeitungsgeschwindigkeit erheblich verbessern. 2) Im Bereich der wissenschaftlichen Forschung sind HDF5 -Dateien für die Datenspeicherung und -abnahme optimiert. 3) In der medizinischen Versorgung verbessern die Datenbankoptimierungstechnologien wie die Indexierung und die Partitionierung die Leistung der Datenabfrage. 4) In AI beschleunigen Daten, die Sharding und das verteilte Training beschleunigen, Modelltraining. Die Systemleistung und Skalierbarkeit können erheblich verbessert werden, indem die richtigen Tools und Technologien ausgewählt und Kompromisse zwischen Speicher- und Verarbeitungsgeschwindigkeiten abgewogen werden.

PythonarraysSureScreeatedusedhearrayModule, nicht gebaute Inlikelisten.1) ImportThearrayModule.2) Spezifizieren Sie die THETYPECODE, z.

Zusätzlich zur Shebang -Linie gibt es viele Möglichkeiten, einen Python -Interpreter anzugeben: 1. Verwenden Sie Python -Befehle direkt aus der Befehlszeile; 2. Verwenden Sie Stapeldateien oder Shell -Skripte. 3.. Verwenden Sie Build -Tools wie Make oder CMake; 4. Verwenden Sie Aufgabenläufer wie Invoke. Jede Methode hat ihre Vor- und Nachteile, und es ist wichtig, die Methode auszuwählen, die den Anforderungen des Projekts entspricht.

ForHandlinglargedatasetsinpython, Usenumpyarraysforbetterperformance.1) Numpyarraysarememory-Effiction und FasterFornumericaloperations.2) meidenunnötiger Anbieter.3) HebelVectorisationFecedTimeComplexity.4) ManagemememoryusageSageWithEffizienceDeffictureWitheseffizienz

Inpython, listEUSUutsynamicMemoryAllocationWithover-Accocation, whilenumpyarraysalcodeFixedMemory.1) ListSallocatemoremoryThanneded intellig, vereitelte, dass die sterbliche Größe von Zeitpunkte, OfferingPredictableSageStoageStloseflexeflexibilität.

Inpython, youcansspecthedatatypeyFelemeremodelerernspant.1) Usenpynernrump.1) Usenpynerp.dloatp.Ploatm64, Formor -Präzise -Preciscontrolatatypen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
