Как повторно использовать приложение многократного использования в 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, а затем распространите обновление до развертывания через него.