Der Dateiname war in Python schlecht und ich war süchtig nach Import

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.

Error

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)

Zirkelverweis auf sich

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.

Fazit

Es funktioniert, wenn Sie den Dateinamen ändern. Vermeiden Sie denselben Dateinamen, den Sie importieren möchten.

Recommended Posts

Der Dateiname war in Python schlecht und ich war süchtig nach Import
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Ich war süchtig nach falschen Klassenvariablen und Instanzvariablen in Python
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
Was ich süchtig nach Python Autorun war
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
Eine Geschichte über das Schreiben von AWS Lambda und ein wenig Abhängigkeit von den Standardwerten von Python-Argumenten
Python: Ich konnte in Lambda rekursieren
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich möchte den Fortschritt in Python anzeigen!
Numpys Intelligenz (Eingabevervollständigung) ist in VS Code unvollständig und ich war leicht süchtig nach der Lösung
Importfehler: Der Name'Flask 'kann nicht importiert werden, wenn der Dateiname in Flask flask.py lautet
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Python-Memorandum: Lesen Sie den Text und bearbeiten Sie den Dateinamen, während Sie die Zieldatei kopieren
Ich möchte den Dateinamen von DataLoader sehen
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
So erhalten Sie den Variablennamen selbst in Python
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich möchte eine Datei mit Python zufällig testen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Python: Kann in Lambda wiederholt werden
Ich war süchtig danach, logging.getLogger mit Flask 1.1.x zu versuchen
Ich möchte R-Datensatz mit Python verwenden
Wovon ich süchtig war, als ich Python Tornado benutzte
Ich dachte, es sei dasselbe wie Python, und ich war süchtig nach dem Problem, dass der Ruby-Interpreter nicht gestartet wurde.
Ich war nüchtern süchtig danach, awscli von einem in crontab registrierten Python 2.7-Skript aus aufzurufen
Beachten Sie, dass ich süchtig nach dem npm-Skript war, das in der Überprüfungsumgebung nicht übergeben wurde
Wovon ich süchtig war, als ich Klassenvererbung und gemeinsame Tabellenvererbung in SQLAlchemy kombinierte
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
Holen Sie sich den MIME-Typ in Python und bestimmen Sie das Dateiformat
So importieren Sie Dateien in Python an eine beliebige Stelle
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich möchte die Natur von Python und Pip kennenlernen
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
[Fix] Ich war süchtig nach dem alphanumerischen Urteil über Python-Strings
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
Im Python-Befehl zeigt Python auf Python3.8
Es war großartig, die Python-Datei in Raspberry Pi mit der Remote-Funktion von Atom zu bearbeiten
Ich habe die Warteschlange in Python geschrieben
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Holen Sie sich den Hostnamen in Python
Eine Geschichte, nach der ich süchtig war, als ich in Go nil als Funktionsargument angab
Ich war süchtig nach Multiprocessing + Psycopg2
Ich habe den Stack in Python geschrieben
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte
Suchen Sie den Dateinamen einschließlich des angegebenen Wortes und der angegebenen Erweiterung im Verzeichnis
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ich möchte die zweite Zeile zum Spaltennamen in Pandas machen
Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format
So zeigen Sie Bytes in Java und Python auf die gleiche Weise an