A ativação do ambiente virtual não importa variáveis de ambiente

0

Estou tentando escrever um script bash que executa alguns comandos de gerenciamento python durante a noite.

Eu li de outros posts que você precisa para source o virtualenv para poder importar as variáveis de ambiente, no entanto, mesmo depois de ter adicionado o comando, ele ainda não funciona:

#!/bin/bash
source /home/DDiran/.virtualenvs/envname/bin/activate && cd 
/home/DDiran/projectdir/ && python manage.py randomize_product_order && 
python manage.py update_product_prices

O var em questão é $PRODUCTION_ENV e resulta vazio (levantando um python KeyError: None )

O que estou fazendo de errado e por quê?

EDITAR

Conforme solicitado por @Romeo Ninov, o conteúdo de bin/activate : link

As variáveis de ambiente estão definidas em bin/postactivate , que está definido para ser executado imediatamente após bin/activate , eu acho? É assim que normalmente funciona ao ativar o virtualenv.

    
por DDiran 16.02.2018 / 11:24

1 resposta

0

Depois de realizar mais pesquisas, encontrei duas soluções diferentes. Vou postar aqui para qualquer um que tenha um problema semelhante no futuro:

Solução # 1

Como por este post no AskUbuntu , o atual script em si precisa ser originado, então ao invés de:

bash myscript.sh

Precisa ser:

source myscript.sh

A explicação completa de por que isso precisa acontecer está no link acima.

Solução # 2

É muito mais fácil. Em vez de ativar o ambiente virtual e executar:

python manage.py my_command

Você simplesmente executa:

/path/to/virtual/env/bin/python manage.py my_command

Dessa forma, você não precisa se preocupar com a ativação do ambiente virtual e as variáveis de ambiente definidas em seu virtualenv estarão lá.

    
por 16.02.2018 / 12:59