Создание нескольких модулей Python в разных каталогах, которые разделяют часть структуры пакета

Я работаю над проектом Django, который содержит одно приложение. Приложение будет выпущено под лицензией GPL, поэтому я хочу разработать его отдельно от проекта - личного сайта, использующего приложение. Я'я пытаюсь использовать структуру пакета на основе моего доменного имени как для проекта, так и для приложения, и это 'где яЯ сталкиваюсь с проблемами.

Вот's моя файловая структура (с файлами __init__.py, где это уместно):

$HOME/django-sites/mydomain
$HOME/django-apps/mydomain/cms

И мой ПИТОНАТ

$HOME/django-sites:$HOME/django-apps

Если я запускаю интерпретатор Python (из любого каталога в файловой системе), я могу импортировать классы с сайта, но не из приложения. Если я переверну порядок двух записей в PYTHONPATH (сначала приложения, затем сайты), я смогу импортировать их из приложения, но не с сайта.

Похоже на питонатолько пытается импортировать из первой записи в PYTHONPATH, которая содержит первую часть имени пакета. Это верно? Это ожидаемое поведение? Если это так, я могу вставлять модули только в такие структуры пакетов, как домен / приложение1, домен / приложение2, если они находятся в одной структуре каталогов - независимо от PYTHONPATH.

Это'не шоу-стоппер, потому что я могу переименовать сайт, но этосильно отличается от того, что я ожидал. В руководстве по Python упоминается __path__, но я понятия не имею, как его использовать:

Пакеты поддерживают еще один специальный атрибут __path__. Это инициализируется как список, содержащий имя каталога, содержащего пакетs __init__.py перед выполнением кода в этом файле. Эта переменная может быть изменена; это влияет на последующий поиск модулей и подпакетов, содержащихся в пакете.

Хотя эта функция не требуется часто, ее можно использовать для расширения набора модулей, найденных в пакете.

Кто-нибудь еще сталкивался с этим? Что я могу сделать с __path__, чтобы сделать эту функцию, как ожидалось?

Ответы на вопрос(3)

Ваш ответ на вопрос