Как повторно использовать повторно используемое приложение в Django - PullRequest
19 голосов
/ 17 февраля 2009

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

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

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

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

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

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

Ответы [ 2 ]

26 голосов
/ 17 февраля 2009

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

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

Вы узнаете, что все в порядке, если сможете запустить интерпретатор Python и «импортировать голосование» (например) без получения ошибки ImportError.

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

2 голосов
/ 14 сентября 2010

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...