Как повторно использовать приложение многократного использования в Django


Я пытаюсь создать свой первый сайт в Django, и поскольку я ищу примеры приложений там, чтобы черпать вдохновение, я постоянно натыкаюсь на термин под названием "многоразовые приложения".

Я понимаю концепцию приложения, которое можно многократно использовать, но средства повторного использования приложения в Django для меня совершенно потеряны. Несколько вопросов, которые меня подталкивают во всем бизнесе:

Каков предпочтительный способ повторного использования существующего приложения Django? Где я могу его разместить и как мне это сделать?

Из того, что я понимаю, рекомендуется указать его на "PYTHONPATH", но это ломается, как только мне нужно развернуть мое приложение в удаленном месте, к которому у меня ограниченный доступ (например, в службе хостинга).

Итак, если я создаю свой сайт на своем локальном компьютере и намерен развернуть его на ISP, где у меня есть только доступ к ftp, как мне повторно использовать сторонние приложения Django, чтобы при развертывании моего сайта сайт сохранял (например, единственное, на что я могу рассчитывать, это то, что у поставщика услуг установлены Python 2.5 и Django 1.x)?

Как мне организовать проект Django, чтобы я мог легко развернуть его вместе со всеми приложениями многократного использования, которые я хочу использовать?

Ответ 1

В общем, единственное, что требуется для использования приложения многократного использования, - это убедиться, что оно находится на sys.path, чтобы вы могли импортировать его из кода Python. В большинстве случаев (если автор следует наилучшей практике), многоразовый архив или пакет приложений будет содержать каталог верхнего уровня с документами, README, a setup.py, а затем подкаталог, содержащий фактическое приложение (см. django-voting для примера: само приложение находится в подкаталоге "голосования" ). Этот подкаталог должен быть помещен в ваш путь Python. Возможные способы для этого:

  • running pip install appname, если приложение было загружено на PyPI (в наши дни большинство)
  • установка приложения с помощью setup.py install (это имеет тот же результат, что и pip install appname, но требует, чтобы вы сначала загрузили и распаковали код самостоятельно, pip сделает это за вас)
  • вручную, символически привязывая каталог кода к вашему каталогу сайтов сайтов Python
  • с помощью программного обеспечения, такого как virtualenv, чтобы создать "виртуальную среду Python" с собственным каталогом пакетов сайтов, а затем запустить setup.py install или pip install appname с активным виртуальным пользователем или размещением или симлинкой приложения в виртуальных сайтах-сайтах (настоятельно рекомендуется по всем параметрам "глобальной установки", если вы цените свое будущее).
  • размещение приложения в каком-либо каталоге, где вы собираетесь размещать различные приложения, а затем добавить этот каталог в переменную среды PYTHONPATH

Вы узнаете, что у вас есть это в нужном месте, если вы можете запустить интерпретатор Python и "импортировать голосование" (например), не получив ImportError.

На сервере, где у вас есть только FTP-доступ, ваш единственный вариант - последний, и он должен настроить его для вас. Если они утверждают, что поддерживают Django, они должны предоставить какое-то место, где вы можете загружать пакеты, и они будут доступны для импорта в Python. Не зная подробностей вашего веб-хостинга, невозможно сказать, как они структурируют это для вас.

Ответ 2

Старый вопрос, но вот что я делаю:

Если вы используете систему управления версиями (VCS), я предлагаю разместить все используемые повторно приложения и библиотеки (в том числе django), которые необходимы вашему программному обеспечению в VCS. Если вы не хотите размещать их прямо под своим корнем проекта, вы можете изменить settings.py, чтобы добавить их местоположение в sys.path.

После этого развертывание так же просто, как клонирование или проверка репозитория VCS везде, где вы хотите его использовать.

Это имеет два дополнительных преимущества:

  • Несоответствие версий; ваше программное обеспечение всегда использует версию, с которой вы протестировали ее, а не версию, доступную на момент развертывания.
  • Если в проекте работает несколько человек, никто не должен иметь дело с установкой зависимостей.

Когда пришло время обновить версию компонента, обновите ее в своем VCS, а затем распространите обновление до развертывания через него.