Инструменты/рекомендации по управлению зависимостями приложений?

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

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

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

Ответ 1

Используйте pip и virtualenv. С помощью virtualenv вы можете создать "виртуальную среду", в которой все ваши пакеты 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 служит как документация, так и как часть процедуры установки, поэтому нет необходимости синхронизировать эти два.