Вот мои причины, по которым я думаю, что это будет неправильно:
- это дополнительная сложность кода без большой необходимости, добавление одной строки в настройки каждый раз не так уж и плохо, особенно если вывыполняя шаги № 1 и № 3.
- , станет неясно, какие приложения использует ваш проект.Когда другой разработчик будет работать над вашим проектом, он может не знать, что ваше приложение установлено.
- Вы должны выполнить шаг № 1 и шаг № 2 в системе управления версиями кода, протестировать всю систему, а затем зафиксировать изменения ипросто разверните его.
Я думаю, что у вас что-то не так (с моей точки зрения) в процессе разработки / развертывания, если вы ищете такую "оптимизацию".Я думаю, что это гораздо проще и лучше использовать INSTALLED_APPS
.
Если вы создаете что-то для публичного использования и хотите максимально упростить добавление модулей, было бы неплохо.В этом случае я бы рекомендовал упаковать проект и его приложения в виде яиц Python и использовать точки входа.Затем вы можете развернуть приложение в проекте, например так:
pip install my-app-name
Даже без шагов № 1 и № 3!Шаг № 1 будет выполнен с помощью pip
, а шаг № 2 и № 3 - с помощью установочных хуков, определенных в вашем проекте.
Скрипт вставки является хорошим примеромиспользование очков:
# Install paste script:
pip install pastescript
# install django templates for pastescript:
pip install fez.djangoskel
# now paste script knows about fez.djangoskel because of entry-points
# start a new django project from fez's templates:
paste create -t django_buildout
Вот часть setup.py
из пакета fez.djangoskel:
...
entry_points="""
[paste.paster_create_template]
django_buildout=fez.djangoskel.pastertemplates:DjangoBuildoutTemplate
django_app=fez.djangoskel.pastertemplates:DjangoAppTemplate
...
zc.buildout - еще один замечательный инструмент, который можетсделать ваши развертывания намного проще.Яйца питона играют очень хорошо со сборкой.