Я пропущу обсуждение упаковки Python (distutils, setuptools, pip и т. Д.), Поскольку кажется, что вы предпочитаете использовать простые zip-файлы или архивы. Я рассмотрю "болевые точки", которые вы упомянули по одному:
Файлы шаблонов : Пока у вас есть параметр django.template.loaders.app_directories.load_template_source, включенный в настройку TEMPLATE_LOADERS ваших проектов, вам не нужно беспокоиться об этом. Каждое из ваших приложений может иметь подкаталог «templates /», и шаблоны в нем будут загружаться так же, как если бы они находились в вашем каталоге шаблонов для всего проекта.
Медиа-файлы : Медиа-приложение - это боль. Для разработки вы можете использовать пользовательское представление serve_media, которое работает аналогично загрузчику шаблонов app_directories (ищет медиа в каждом приложении). В производственной среде вы должны либо скопировать файлы, либо использовать символические ссылки, либо использовать псевдонимы уровня веб-сервера. Есть несколько служебных приложений, которые пытаются сгладить эту проблему; Я сейчас использую django-staticfiles .
Редактирование settings.py : Нет простого способа обойти это. Для работы моделей, тегов шаблонов, команд управления и т. Д. Приложение должно быть указано в INSTALLED_APPS. Что вы могли бы сделать, это написать в вашем файле settings.py некоторый пользовательский код, который перечисляет содержимое определенного каталога и динамически добавляет найденные там пакеты в INSTALLED_APPS. Немного опасно (подумайте о том, у кого есть права на размещение файлов в этом каталоге, потому что у них есть ключи от вашего королевства), и новые файлы там будут обнаруживаться только при перезагрузке сервера, но это должно сработать.
Я думаю, что если вы соберете эти решения, можно достичь идеальной ситуации: разархивировать для установки, удалить для удаления.