Я прочитал несколько статей о модулях и пакетах в Python (включая их собственное руководство), но не смог заставить его правильно работать над моим проектом. Я использую Python 3.7.5
Это моя структура каталогов:
framework/
__init__.py
build/
classifiers/
extraction/
extractionFile.py
quality/
utils/
utilsFile.py
На extractFile.py у меня есть эта строка:
from ..utils.utilsFile import functionName
Но когда я запускаю extractFile.py из каталога извлечения, я получаю следующую ошибку:
Traceback (most recent call last):
File "extractionFile.py", line 25, in <module>
from ..utils.utilsFile import functionName
ImportError: attempted relative import with no known parent package
Если я запускаю extractFile.py из каталога платформы, используя:
from utils.utilsFile import functionName
Это работает правильно .
Так как же я могу превратить только каталог utils в пакет, чтобы импортировать любой файл, который находится внутри него, из каталогов братьев и сестер?
Примечание: I only Мне нужно использовать пакет в этом проекте.
Примечание: Я пытаюсь получить постоянное решение, поэтому sys.path.insert (), кажется, не вариант.
Редактировать: Ответ помечен как правильный, но в итоге я нашел другое решение. Из каталога фреймворка просто запустите (я использую Linux):
DIR=$(pwd) && export PYTHONPATH="${PYTHONPATH}:$DIR"
Это помещает каталог фреймворка в переменные sys.path для Python. Путь к Python для поиска пакетов и модулей.
Полагаю, вы просто используете тот, который лучше подходит для вашего случая.