Импорт подмодуля из собранного модуля в другой пакет - PullRequest
0 голосов
/ 05 мая 2018

Я относительно новичок в Python и считаю, что все, что связано с импортом / пакетом / модулями, слишком сложно для меня, чтобы понять это правильно ... У меня есть 2 больших сомнения, позвольте мне объяснить их на примере:

У меня есть проект Python с этой архитектурой (все имена составлены):

project/
    - main.py
    + data/
        - app.py
        - test.py
    + tools/
        - util.py

Когда я хочу использовать что-то (скажем, класс Solver, например) из util.py в main.py, я импортирую это так:

from tools.util import Solver

Работает нормально. Если я хочу импортировать что-то из test.py (функция do_it, например) в app.py, это также работает:

from .test import do_it

Теперь с проблемой:

(1) Что, если я хочу импортировать Solver из util.py модуля в app.py?

Я знаю, у вас может быть __init__.py для каждого из пакетов, где вы определяете функции / классы / исключения / ... вы хотите, чтобы другие могли импортировать из этого пакета, но есть ли способ, который мог бы помочь мне в этой ситуации?

Кроме того, если я сделаю такой импорт:

from tools.util import Solver

работает нормально, когда я тестирую вещи "локально", но если я устанавливаю свой пакет project через пункт , я всегда получаю сообщение об ошибке типа ImportError: No module named 'tools'. Итак, мое второе сомнение:

(2) Как заставить один и тот же импорт работать как «локально», так и после установки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...