Usando o Python para abrir um ambiente shell, execute um ambiente de comando e saída
Estou tentando automatizar um processo usando python. Se eu estiver no terminal, o fluxo de trabalho será semelhante a:
user:> . /path/to/env1.sh
user:> python something.py
user:> exit
user:> . /path/to/env2.sh
user:> python something2.py
user:> exit
etc para mais algumas etapas. Cadaenv.sh
gera um novo script com várias variáveis de ambiente e outras coisas definidas no diretório atual. Tenho certeza de que preciso usar o subprocesso, mas não sei exatamente como fazê-lo. Idealmente, o fluxo de trabalho seria: abra um novo shell -> execute alguns comandos -> saia do shell -> repita conforme necessário.
EDIT: Parece que é necessário algum esclarecimento. Eu entendo como usarsubprocess.Popen()
esubprocess.call()
chamar coisas de dentro do shell de onde o script Python foi chamado. Não é disso que eu preciso. Quando alguém chamaenv.sh
ele define uma tonelada de variáveis de ambiente e algumas outras coisas pertinentes e, em seguida, coloca você em um shell para executar comandos. É importante notarenv.sh
não termina até que um digiteexit
depois de executar os comandos desejados. Usandosubprocess.call("./env.sh", shell = True)
abre a concha e pára por aí. É como digitar o comando./env.sh
exceto que quando se emite oexit
comando, o restante do script python. Assim:
subprocess.call(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
NÃO faz o que eu preciso, nem faz:
p = subprocess.Popen(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
p.kill()