Ich habe einen kleinen Test versucht und war begeistert davon, ihm den gleichen Namen zu geben wie dem Modul, das ich importieren wollte. Es mag gesunder Menschenverstand sein, aber ich wusste es nicht, also werde ich es mir notieren.
Angenommen, Sie möchten das Mathematikmodul testen und eine Datei mit dem Namen math.py schreiben.
math.py
import math
print(math.pi)
Dies führt zu einem Fehler.
Ausführungsergebnis
$ python math.py
Traceback (most recent call last):
File "math.py", line 1, in <module>
import math
File "/home/xxxx/math.py", line 2, in <module>
print(math.pi)
AttributeError: partially initialized module 'math' has no attribute 'pi' (most likely due to a circular import)
Die Ursache ist, dass ich mich selbst importiert und wie im Fehler angegeben in Umlauf gebracht habe.
(most likely due to a circular import)
Ich wusste es nicht sofort, also habe ich versucht, einen Druck darin zu platzieren.
math.py
print("math")
import math
print(math.pi)
Ausführungsergebnis
$ python math.py
math
math
Traceback (most recent call last):
File "math.py", line 2, in <module>
import math
File "/home/xxxx/math.py", line 3, in <module>
print(math.pi)
AttributeError: partially initialized module 'math' has no attribute 'pi' (most likely due to a circular import)
math
wird zweimal angezeigt. Endlich wusste ich, dass ich mich auf mich selbst bezog.
Der zweite Import derselben Datei wird ignoriert. Erhalten Sie daher eine Fehlermeldung, da math.pi
fehlt.
Es funktioniert, wenn Sie den Dateinamen ändern. Vermeiden Sie denselben Dateinamen, den Sie importieren möchten.
Recommended Posts