#python #package
#python #пакет
Вопрос:
У меня есть проект в виде следующей структуры:
project
|-setup.py
|-... some files (README, LICENSE, etc)
|-package_name
|-__init__.py
|-utility.py
|-m.py
Прежде чем принять решение о настройке pypi для него, я использовал:
from utility import *
для импорта utility
в m
. Однако затем, когда я устанавливаю пакет, он не может импортировать utility
, и мне пришлось изменить его на:
from package_name.utility import *
Опять же, когда я хочу разработать проект, мне пришлось вернуться к первому:
Я написал:
try:
from package_name.utility import *
except:
from utility import *
Но я хотел бы знать, есть ли лучшее решение?
Ответ №1:
Вы можете использовать относительный импорт: from .utility import *
Чтобы иметь возможность использовать абсолютный импорт (например, после установки пакета from package_name.utility import *
) во время разработки, вы можете установить пакет в редактируемом режиме:
pip install --editable .
- или
python setup.py develop
Эти команды установят пакет в вашей среде таким образом, что все изменения кода вступят в силу немедленно при повторном запуске приложения, без необходимости переустановки пакета.