Развертывание Django с virtualenv внутри дистрибутива?

Мне нужно развернуть приложение Django в системе SuSE Linux Enterprise 11. Корпоративные правила говорят, что мне нужно развертывать только с использованием RPM. Хотя я могу использовать ./setup.py bdist_rpm для каждой зависимости, это не очень разумно, поскольку RPM еще не записывает все зависимости. Поэтому у меня не было бы реального преимущества в использовании RPM, а управление зависимостями вручную несколько громоздко, и я хотел бы избежать этого.

Теперь у меня возникла следующая идея: при сборке пакета я мог бы создать virtualenv, установить туда все мои зависимости через pip, а затем упаковать его с остальным кодом в один цельный RPM.

Насколько разумен такой подход?


person Nikolai Prokoschenko    schedule 03.11.2010    source источник


Ответы (1)


Я использую этот подход уже около года, и он сработал довольно хорошо.

Одна из проблем заключается в том, что вам нужно проверить строки взрыва в любых сценариях Python, написанных в каталоге bin виртуального окружения. В конечном итоге это будут полные имена путей, используемые в вашей среде сборки, которые, вероятно, не будут тем же каталогом, в котором вы в конечном итоге устанавливаете virtualenv. Поэтому вам может понадобиться добавить несколько вызовов sed в постустановку вашего RPM, чтобы настроить пути.

person pwan    schedule 15.01.2011
comment
Возможно, вы захотите изучить параметр --relocatable при создании своего виртуального окружения; он не идеален, но решает некоторые проблемы с абсолютными путями. - person Craig Trader; 05.10.2011