Упакуйте проект django и его зависимости для отдельного «продукта» - PullRequest
13 голосов
/ 15 декабря 2010

Я сделал небольшое маленькое «приложение», используя Django в качестве фреймворка. Это приложение, которое не предназначено для развертывания на сервере, а запускается локально на компьютере. Таким образом, runserver.py работает просто замечательно.

Мне, как разработчику, удобно запускать терминал, запускать python manage.py runserver.py и использовать его. Но у меня есть друзья из Mac OS X и Windows, которые хотят это использовать. И у них нет virtualenv, и мерзавца, и всего такого. Могу ли я каким-то образом упаковать этот продукт, чтобы он был как бы отдельным продуктом? Конечно, это будет зависеть от установки Python в системе, но можно упаковать virtualenv, с django и всем остальным, и просто скопировать его в другую систему и заставить его работать?

А может быть, даже запустить runserver в каком-то режиме deamon?

Ответы [ 6 ]

2 голосов
/ 15 декабря 2010

Используйте setuptools и easy_install.

Вот вступительная статья .

2 голосов
/ 15 декабря 2010

Да, вы можете упаковать его. Джанго, возможно, не самый простой способ сделать это, но принципы одинаковы для других структур. Вам нужно сделать установщик, который установит все, что вам нужно. И этот установщик должен быть разным для разных платформ. такие как Windows, Ubuntu, OS X и т. д. Это также означает, что ответ значительно различается для каждой платформы, и только половина ответа зависит от Django. : - (

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

1 голос
/ 12 сентября 2018

Новый менеджер пакетов snap для Linux должен идеально соответствовать этой задаче. Он предоставляет все решения, которые до сих пор были довольно болезненными для приложений Python (зависимости, интерпретатор и т. Д.) И в то же время избегал сложности Docker.

1 голос
/ 08 июня 2018

Я также не нашел идеального решения для этого.

Мой текущий подход заключается в предоставлении образа докера, потому что он действительно прост в использовании для всех. Это включает в себя 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 в производственной среде. Так что имейте это в виду при упаковке.

Надеюсь, это немного поможет.

1 голос
/ 15 декабря 2010

Есть несколько способов сделать это.Я думаю, вы ищете больше инструментов для сборки (включая упаковку), а не просто решение Python.Вот пара, которую я использовал в прошлом:

zc.buildout : Используется для сборки и развертывания модулей и приложений Python, но также может работать с другими языками снемного массируя.Простота в использовании (для инструмента сборки).

make : Классическая сборка программного обеспечения.Работает практически со всеми языками, но немного архаично и трудно выучить в первый раз.

0 голосов
/ 26 сентября 2015

В наши дни Docker, вероятно, хороший ответ

Пользователь должен сначала установить Docker , но он работает в Windows и OSX, а также в Linux.

Ваш Dockerfileзаботится об установке всех зависимостей, а затем запускает devserver (или вы даже можете запустить правильный веб-сервер в контейнере)

...