Импорт Python не работает

У меня такое дерево:

package/
    subpackage1/
        __init__.py
        impl/
            __init__.py
            moduleA.py
            moduleA_test.py
    subpackage2/
        __init__.py
        impl/
            __init__.py
            moduleB.py

В moduleA.pyI have этот код:

from subpackage2.impl.moduleB import func_abc

Модуль moduleA_test.pyпросто импортирует moduleAи тестирует свои функции.
Когда в терминале, если я нахожусь в папке packageи запуститьpython, а затемfrom subpackage1.impl import moduleA, он работает нормально.

Но если я выполняю python submodule1/impl/moduleA_test.py(все еще в packageпапке), код вызывает ошибку в строке импорта, которую я написал выше. Я понимаю ImportError: No module named subpackage2.impl.moduleB.

Я также пытался, python -m submodule1.impl.moduleA_test.pyно безуспешно.

1 ответ

  1. Когда вы пишетеfrom subpackage2.impl.moduleB import func_abc, он ищет папку subpackage2 в том же каталоге, что и ваш код, т. е. пакет.subpackage1.impl.

    Поэтому при написании инструкции import выполняется поиск пакета.subpackage1.impl.subpackage2.impl.moduleB которого нет и поэтому дает ошибку.