Python зависимость между модулями

Возможный дубликат:
Python: круговой (или циклический) импорт
Круговая зависимость в Python

У меня есть пакет Python с двумя модулями, которые импортируют друг друга. То есть в модуле А у нас есть строка

from B import b

и в модуле B у нас есть строка

from A import a

Когда я пытаюсь загрузить пакет, содержащий эти модули, я получаю следующую ошибку

ImportError: невозможно импортировать имя

Есть ли способ избежать этой ошибки (без объединения двух модулей в один большой модуль AB)?

2 ответа

  1. Разделите их на еще больше модулей - например, вы можете выделить a в отдельный модуль, который как A а также B зависит от.

  2. использование import A а также import B вместо from ... варианты - это сделает импорт успешным, даже если имя, которое вы хотите импортировать, еще не было привязано во время импорта.

  3. Используйте импорт на уровне функций в определенных местах, где вам нужны символы из другого модуля. (Мне не очень нравится этот вариант, но он работает.)

Вы не можете сделать это, потому что у вас есть круговая ссылка. Создайте новый модуль и импортируйте оба там:

from B import b
from A import a
Другие вопросы по тегам