Como posso passar variáveis de ambiente para um script WSGI usando o uWSGI?

1

Adicionei a seguinte linha a /etc/environment :

FOO_DEPLOYMENT_ENV="vbox"

Ao fazer login via SSH, posso echo $FOO_DEPLOYMENT_ENV e, claro, ver vbox output no shell. Se eu abrir um shell Python e executar os.getenv('FOO_DEPLOYMENT_ENV') , ele retornará 'vbox' , mas o mesmo código no meu aplicativo Python, quando executado pelo uWSGI (como o www-data user), ele não verá a variável de ambiente. / p>

Claramente, isso não é um problema do uWSGI, e é um problema com meu entendimento das variáveis de ambiente, ou como elas estão adequadamente definidas, e os contextos nos quais elas podem ser recuperadas. O que estou fazendo ou entendendo incorretamente?

    
por orokusaki 20.12.2012 / 00:09

1 resposta

1

Em suma, você não pode. Uma variável de ambiente pode existir em uma instância de shell específica e pode ser exportada para sub-shells. Mas em nenhum caso você pode exportar variáveis de ambiente para um shell Parent mais e certamente não fora de qualquer cadeia de in-heartence de shells.

No entanto, você pode armazenar entradas em um arquivo conforme sugerido e importá-las manualmente pelo '.' comando no caso de derivativos SH ou o comando source por derivativos CSH.

Eu pessoalmente uso tcsh para meu shell interativo. Se você estivesse usando isso, poderia colocar um alias chamado cwdcmd que executaria um conjunto de comandos entre cada comando inserido. Eu uso esse recurso para colocar o nome do host, nome de usuário e diretório de trabalho atual em meus prompts de comando. Usando esse recurso, você poderia colocar uma diretiva include que ajustaria seu ambiente entre cada prompt de comando.

    
por 20.12.2012 / 00:17