Инструменты / лучшие практики для управления зависимостями приложений? - PullRequest
11 голосов
/ 02 марта 2011

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

Я разрабатываю веб-приложение, которое, хотя и скромно, имеет ряд зависимостей. Как минимум, я хотел бы отслеживать программное обеспечение и номер версии для них. Полагаю, мне также хотелось бы отслеживать конфигурации необходимого программного обеспечения и, возможно, некоторые системные компоненты (идентификатор пользователя, если таковой имеется, процесса экземпляра необходимого программного обеспечения и требуемых разрешений для него).

(Еще лучше было бы кое-что, что помогло бы мне настроить сервер для приложения, когда я был готов к развертыванию. Еще лучше было бы то, что позволяет мне отслеживать сервер имен http и dns, используемый для поддержки приложения Но ходят слухи, что марионетка - инструмент для такого рода вещей.)

1 Ответ

18 голосов
/ 02 марта 2011

Используйте pip и virtualenvvirtualenv вы можете создать «виртуальную среду», в которой все ваши пакеты Python установлены в локальном каталоге.С помощью pip install -r вы можете установить все пакеты, перечисленные в конкретном файле требований.

Пример:

virtualenv /path/to/env --no-site-packages --unzip-setuptools # create virtual environment
source /path/to/env/bin/activate # activate environment
easy_install pip # install pip into environment
source /path/to/env/bin/activate # reload to get access to pip
pip install -r requirements.txt

Где requirements.txt содержит строки, подобные этой:

django==1.3

Самое замечательное в этом то, что requirements.txt служит как документацией, так и частью процедуры установки, поэтому нет необходимости синхронизировать их.

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