Dopo aver esaminato le risposte fornite da questi contributori sopra - Zorglub29, Tom, Mark, Aaron McMillin, lucasamaral, JoeyZhao, Kjeld Flarup, Procyclinsur, martin.zaenker, tooty44 e il debug del problema che stavo affrontando, ho scoperto un caso d'uso diverso a causa a cui stavo affrontando questo problema. Quindi aggiungendo le mie osservazioni di seguito per riferimento di chiunque.
Nel mio codice avevo un'importazione ciclica di classi. Per esempio:
src
|-- utilities.py (has Utilities class that uses Event class)
|-- consume_utilities.py (has Event class that uses Utilities class)
|-- tests
|-- test_consume_utilities.py (executes test cases that involves Event class)
Ho ricevuto il seguente errore quando ho provato a eseguire python -m pytest tests / test_utilities.py per eseguire UT scritti in test_utilities.py.
ImportError while importing test module '/Users/.../src/tests/test_utilities.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_utilities.py:1: in <module>
from utilities import Utilities
...
...
E ImportError: cannot import name 'Utilities'
Il modo in cui ho risolto l'errore è stato rifattorizzando il mio codice per spostare la funzionalità nella classe di importazione ciclica in modo da poter rimuovere l'importazione ciclica delle classi.
Nota, ho un __init__.pyfile nella mia cartella " src " e nella cartella " tests " e sono comunque riuscito a sbarazzarmi di " ImportError " semplicemente rifattorizzando il codice.
Il seguente collegamento stackoverflow fornisce molti più dettagli sulla dipendenza circolare in Python .