У меня есть небольшой веб-фреймворк, назовем его Bread, который используется для создания таких приложений, как Jam, Marmalade, PeanutButter и других начинок. Хлеб и создает, и обслуживает эти приложения.
Я пытаюсь понять, как заставить приложения работать setup.py
, учитывая следующие требования:
- Приложения зависят от Bread через install_requires в setuptool.
- Чтобы создать приложение во время разработки, Bread считывает некоторую конфигурацию, а затем передает ресурсы (HTML, JS, CSS, изображения и т. д.) в каталог приложения
output
. Другими словами,bread devserver
читаетJam/bread.yaml
и собирает активы вJam/output
, а затем обслуживает приложение (через Flask, но это не имеет отношения к делу). - Чтобы создать развертываемое приложение Jam, я хочу вызвать Bread во время
python setup.py install
Jam для сборкиJam/output
. В продакшене Jam не нужно ничего строить. - Я определил пользовательскую команду установки
bdist_egg
, гдеinitialize_options
импортирует Bread, вызывает компоновщик, затем устанавливаетself.distribution.data_files
с соответствующими кортежами перед вызовом базового класса. (И это было неинтересно выяснять.) - Прямо сейчас
bdist_egg
определяется вsetup.py
Jam. Я хочу переместить этот и другой шаблонный код вbread.setup
, чтобы я мог повторно использовать его в Marmalade, PeanutButter и т. д. - Потенциально это означает, что теперь я импортирую код Bread до того, как Bread будет установлен. Это наверняка возникнет при чистой установке, например, при новой виртуальной среде на машине сборки.
Можно ли это сделать с помощью Distutils/setuptools/Distribute?