Я также не нашел идеального решения для этого.
Мой текущий подход заключается в предоставлении образа докера, потому что он действительно прост в использовании для всех. Это включает в себя alpine базовое изображение, потому что оно крошечное и python + django и само приложение. Вы также можете включить веб-сервер, такой как nginx, и сервер приложений, такой как uwsgi или gunicorn, и открыть для него порт.
Таким образом, в итоге ваш пользователь просто запустит контейнер и получит доступ к веб-приложению под http://localhost:9000/ или как-то так.
Это действительно удобно, а также мой любимый способ попробовать какое-то приложение, которое я нашел.
«Правильным» способом было бы создать пакет для каждой ОС и дистрибутива, на который вы нацелены, и простой пакет zip, чтобы люди могли также установить приложение вручную.
Для сборки пакетов я предлагаю использовать fpm . Это берет большую часть боли создания упаковки с их родными инструментами далеко. Пакеты будут зависеть от правильного сервера приложений, такого как uwsgi или gunicorn.
Таким образом, в итоге вы можете установить его как apt install your-package
, и это будет зависеть от python-django
, uwsgi
и т. Д.
Для определения местоположения и места размещения всех файлов в пакете у каждого дистрибутива есть свой способ сделать это. Я предпочитаю ставить все под /usr/share/webapps/myapp/
и иметь конфигурацию под /etc/myapp/config.py
или что-то в этом роде.
Для Windows и macOS существуют такие решения, как PyInstaller . Я еще не использовал его для приложения Django, но оно должно делать свою работу. Вы должны включить туда сервер приложений, такой как uwsgi.
В общем случае вы не хотите запускать сервер django dev в производственной среде. Так что имейте это в виду при упаковке.
Надеюсь, это немного поможет.