Способ работы с импортом внутри проекта заключается в установке проекта в редактируемом режиме . Таким образом, все файлы смогут найти друг друга, всегда начиная с корневого каталога вашего проекта.
Чтобы сделать это, выполните следующие действия:
1) напишите файл setup.py и добавьте его в корневую папку вашего проекта - ему вообще не нужно много информации:
# setup.py
from setuptools import setup, find_packages
setup(name='MyPackageName', version='1.0.0', packages=find_packages())
2) установить пакет в редактируемом режиме (в идеале из виртуальной среды). С терминала в папке вашего проекта напишите
$ pip install -e .
Обратите внимание на точку - это означает «установить пакет из текущего каталога в редактируемом режиме».
3) Ваши файлы внутри проекта теперь могут находить друг друга , всегда начиная с корня проекта. Для импорта Objective
, например, вы пишете:
from mod.mods import Objective
Это будет верно для импорта Objective
для любого файла, независимо от того, где он находится в структуре проекта .
Как я уже сказал, вы должны использовать для этого виртуальную среду, чтобы pip не устанавливал ваш пакет в вашу основную установку Python (что может быть грязно, если у вашего проекта много зависимостей).
Мой любимый инструмент для этого - pipenv . При его использовании замените команду терминала на
$ pipenv install -e .
Чтобы ваш проект был добавлен в Pipfile.