Почему этот циклический импорт завершается ошибкой в ​​Python 2, а не в Python 3? - PullRequest
1 голос
/ 21 января 2020

Предположим, что следующая структура пакета со встроенным кодом:

main.py

from a.b import c

a/__init__.py

a/b/__init__.py

a/b/c.py

from a.b import d

a/b/d.py

from a.b import c

python2 main.py выдает ошибку импорта:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from a.b import c
  File "/home/runner/a/b/c.py", line 1, in <module>
    from a.b import d
  File "/home/runner/a/b/d.py", line 1, in <module>
    from a.b import c
ImportError: cannot import name c

Однако python3 main.py работает нормально. Кто-нибудь знает что происходит? Как я могу исправить эту проблему в Python 2? Я пытаюсь преобразовать относительный импорт в абсолютный импорт!

Python 2 Repl.It

Python 3 Repl.It

1 Ответ

1 голос
/ 21 января 2020

Быстрое решение - перейти от формата

from a.b import d

к

import a.b.d

Я пробовал здесь и, похоже, работает для Python 2.

...