Jak zauważył chepner. Część podprocesowa jest uruchamiana indywidualnie. Praca ze zmiennych środowiskowych musi być wykonane przed uruchomieniem skryptu Pythona ..
Na przykład:
C:\Users\anton\Desktop\githubs>echo %x%
y
C:\Users\anton\Desktop\githubs>python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['x']
'y'
>>>
Sourcing zmienne środowiskowe przed uruchomieniem skryptu będzie przechodzić w dół jednak, lub jeśli wykonanie wielu komendy do wywołania podprocesowego, które również byłyby świetne po tym, jak je skomponowałeś. na przykład:
import subprocess
import os
x = subprocess.call("source k.sh",shell=True, STDIN=subprocess.PIPE, STDOUT=subprocess.PIPE)
y = subprocess.call("echo $var",shell=True, STDIN=x.stdout, STDOUT=subprocess.PIPE)
Nigdy nie próbowałem tego, jak wspomniano. Źródło przed uruchomieniem.
Czy działa z 'os.system' zamiast' subprocess.call'? – SethMMorton
@SethMMorton: Nie, nie działa z os.system – ftw
To nie jest dobry pomysł. Pytanie brzmi, dlaczego próbujesz to zrobić. Co naprawdę chcesz tutaj robić? Po prostu przekaż zmienne z powrotem do rodzica? – cmd