Я относительно новичок в 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) Как заставить один и тот же импорт работать как «локально», так и после установки?