Po przejrzeniu odpowiedzi udzielonych przez tych autorów powyżej - Zorglub29, Tom, Mark, Aaron McMillin, lucasamaral, JoeyZhao, Kjeld Flarup, Procyclinsur, martin.zaenker, tooty44 i debugowaniu problemu, z którym miałem do czynienia, odkryłem inny przypadek użycia z powodu do którego miałem ten problem. Dlatego dodam poniżej moje obserwacje w celach informacyjnych.
W swoim kodzie miałem cykliczny import klas. Na przykład:
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)
Pojawił się następujący błąd, gdy próbowałem wykonać python -m pytest tests / test_utilities.py do wykonywania UT napisanych w 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'
Sposób, w jaki rozwiązałem ten błąd, polegał na ponownym rozłożeniu kodu w celu przeniesienia funkcjonalności w klasie cyklicznego importu, aby móc usunąć cykliczny import klas.
Zauważ, że mam __init__.pyplik w moim folderze „ src ”, a także w folderze „ testy ” i nadal byłem w stanie pozbyć się błędu „ ImportError ” po prostu przez ponowne uwzględnienie kodu.
Poniższy link stackoverflow zawiera znacznie więcej szczegółów na temat zależności cyklicznych w Pythonie .