@Vitalii181190
Начинающий вэб-разработчик

Как решить ошибку импорта, кроме как ипортировать локально?

Иногда сталкиваюсь с этой ошибкой:
ImportError: cannot import name 'ContextList' from partially initialized module 'Pay.utils' (most likely due to a circular import) (C:\Users\Vitaliy\PycharmProjects\Funpay\Funpay\Pay\u
tils.py)

Просматривая видеоуроки у других её не возникает, как это работает и как решить эту проблему, без способа локально импортировать класс.
  • Вопрос задан
  • 31 просмотр
Решения вопроса 2
@bacon
Разобраться что такое циклический импорт (circular import) и начать писать код без него. Так же в django в некоторых местах можно указывать не сам класс, а его строковое написание ForeignKey(Order) -> ForeignKey("Order")
Ответ написан
Комментировать
trapwalker
@trapwalker
Программист, энтузиаст
Такие ошибки возникают когда код неправильно разбит на модули и модули ссылаются друг на друга циклически. К примеру модуль А что-то импортирует из Б, Б импортирует из В, а В из А.
При импорте происходит выполнение кода импортируемого модуля, если это выполнение не было еще сделано ранее.
Нужно
1) не импортировать лишнее
2) изолировать зависимости. Выносить в отдельные мдули те части, которые не зависят от других.

Приводите конкретный пример и вам расскажут как правильно всё разбить, чтобы такой проблемы не было.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы