У меня есть большой репозиторий с фиксированной структурой, и я расширил его несколькими папками и python скриптами, чтобы добавить к нему дополнительные функции в целом. Структура выглядит следующим образом:
- toplevelfolder
- featureA
- someModuleA.py
- __ init __. Py
- featureB
- someModuleB.py
- __ init __. Py
- приложение
- __ init __.py
- app.py
Теперь someModuleA.py
и someModuleB.py
могут быть вызваны через app.py
, но в то же время могут быть вызывается напрямую, однако этот вызов должен исходить из папки верхнего уровня для правильного разрешения относительных путей в файле, то есть через python ./featureA/someModuleA.py
.
Все это работает хорошо, но теперь мне нужны некоторые определения функций из someModuleB
в someModuleA
и, следовательно, я хочу импортировать этот модуль. Я пробовал как абсолютный, так и относительный импорт, но оба терпят неудачу с разными ошибками, абсолютный импорт с
from toplevelfolder.featureA import someModuleA as A
# ModuleNotFoundError: No module named 'toplevelfolder'
и относительный импорт с
from toplevelfolder.featureA import someModuleA as A
# ImportError: attempted relative import with no known parent package
Теперь я вижу, что относительный import вызовет проблемы, когда python вызывается из toplevelfolder
, поскольку ..
будет представлять родительский каталог последнего, а не родительский каталог featureA
. Однако я не могу уловить первое сообщение об ошибке, тем более что toplevelfolder
должен быть не модулем, а пакетом.
Есть ли другой способ импорта в Python, о котором я не знаю, если возможно без изменения PYTHONPATH, sys.path или чего-то подобного?