J'ai essayé un petit test et je suis devenu accro à lui donner le même nom que le module que je voulais importer. C'est peut-être du bon sens, mais je ne le savais pas, alors je vais en prendre note.
Supposons que vous souhaitiez tester le module mathématique et écrire un fichier appelé math.py.
math.py
import math
print(math.pi)
Cela entraînera une erreur.
Résultat d'exécution
$ 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)
La cause est que je me suis importé et que je l'ai diffusé comme indiqué dans l'erreur.
(most likely due to a circular import)
Je ne le savais pas tout de suite, alors j'ai essayé d'y mettre une empreinte.
math.py
print("math")
import math
print(math.pi)
Résultat d'exécution
$ 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
s'affiche deux fois. Enfin, je savais que je faisais référence à moi-même.
La deuxième importation du même fichier est ignorée, alors continuez et obtenez une erreur car math.pi
est manquant.
Cela fonctionne si vous modifiez le nom du fichier. Évitez le même nom de fichier que celui que vous souhaitez importer.
Recommended Posts