Инструменты/рекомендации по управлению зависимостями приложений?
Какие инструменты или лучшие методы доступны для отслеживания и управления зависимостями программного обеспечения, которое я разрабатываю? Я использую 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
служит как документация, так и как часть процедуры установки, поэтому нет необходимости синхронизировать эти два.