Система модулей Python - Импорт родного пакета - PullRequest
0 голосов
/ 01 февраля 2019

В Python я хочу, чтобы файл в подпакете импортировал дочерний подпакет.Вот так:

/proj
    __init__.py
    runner_main.py
    /subpackageA
        __init__.py
        helper.py
    /subpackageB
        __init__.py
        runnerB.py

В runner_main.py я могу назвать import subpackageA просто отлично.Однако вызов from . import subpackageA завершается неудачно с ошибкой

ImportError: cannot import name 'preprocessing' from '__main__'

Это не проблема, за исключением того, что я хочу импортировать helper.py из runnerB.Вызов from .. import subpackageA завершается неудачно с похожей ошибкой.

Я не хочу помещать /proj в мою систему или путь Python;Я хочу, чтобы это работало как отдельный пакет.Как я могу заставить этот простой случай работать?

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Это зависит от того, где вы запускаете свой код.Вы можете импортировать helper.py из runnerB.Но если вы запустите runnerB напрямую, он выдаст вам ту же ошибку, что и вы.Однако, если вы запускаете из любого файла py, расположенного в родительском каталоге, который импортирует модуль runnder, он будет работать.

0 голосов
/ 01 февраля 2019

Попробуйте

from subpackageA import classA, functionB, constantC
...