Sagen wir, ich habe das folgende Python-Quelldatei-Layout:
%Vor%und dann in meinem Quellcode:
%Vor%Ich erhalte einen Importfehler:
%Vor%Wie kann ich eine .py-Datei und ein Verzeichnis mit demselben Namen haben, damit ich Folgendes tun kann:
%Vor%Danke im Voraus!
Das eigentliche Problem, das Sie mit einem einzelnen Import haben, liegt an den Paketen Vorrang vor Modulen haben:
Beachten Sie, dass bei Verwendung von
from package import item
das Element beides sein kann ein Submodul (oder Unterpaket) des Pakets oder ein anderer definierter Name im Paket, wie eine Funktion, Klasse oder Variable. Der Code% Die Anweisung prüft zuerst, ob der Artikel im Paket definiert ist. ob nicht, es nimmt an, dass es ein Modul ist und versucht es zu laden. Wenn es nicht gelingt finde es, eineimport
Ausnahme wird ausgelöst.
Trotzdem würde ich stark vorschlagen, die Datei oder das Verzeichnis umzubenennen, da nicht mehr als ein Modul mit einem bestimmten Namen importieren kann. Das Problem tritt auf, weil jedes Modul / Paketobjekt in ImportError
gespeichert wird, was eine einfache sys.modules
ist und daher nicht mehrere gleiche Schlüssel enthalten kann.
Insbesondere unter der Annahme, dass sich dict
und das foo.py
-Verzeichnis in verschiedenen Verzeichnissen befinden (und wenn dies nicht der Fall ist, können Sie foo
nicht importieren), wenn Sie Folgendes tun:
Es wird foo.py
geladen und das Modul in foo.py
gesetzt und dann versucht:
Scheitert, weil der Import versucht, das Modul sys.modules
anstelle des Pakets zu verwenden.
Das Gegenteil passiert, wenn Sie zuerst foo.py
; Die Importe verwenden das Paket anstelle des Moduls.
Ich bin mir ziemlich sicher, dass Sie das nicht tun sollten, aber Sie können Python zwingen, bestimmte Dateien als Modul zu importieren, indem Sie imp :
%Vor%jetzt können Sie tun:
%Vor%Tags und Links python import importerror