Implantação do Django com Fabric + virtualenvwrapper

Fabric e virtualenvwrapper são duas ferramentas extremamente úteis se você estiver trabalhando com Django e lidando com um monte de implantações e ambientes diferentes. No entanto, usar os dois juntos é um pouco complicado, pois o Fabric usa sh em vez de bash ao usar a API local (). O problema com isso é que se você tentar ativar seu virtualenv, ele falhará com um erro “/ bin / sh: source: command not found”.

Tenho uma pequena função que implementa a solução alternativa postada aqui (1):

def django_manage(command='help', virtualenv='local-django'):
return "/bin/bash -l -c 'source /usr/local/bin/virtualenvwrapper.sh && workon " + virtualenv + " && python src/manage.py " + command + "'"

e eu uso assim:

local(django_manage("migrate app --noinput"))

(para fazer isso funcionar, você terá que fazer o seu cd postactivate virtualenv no diretório do projeto)

Espero que seja útil!

(1) http://stackoverflow.com/questions/8005348/why-doesnt-fabric-see-my-bash-profile