Я пытаюсь использовать переменную окружения в функции, вызываемой скриптом. Проблема, которую я вижу, заключается в том, что переменная устанавливается в первый раз, но в следующий раз, когда я вызываю скрипт, она использует старое значение переменной. Я использую exe c () для вызова сценария python.
Вот минимальный пример:
Файл: test_run.py
import os
import sys
from io import StringIO
sigmas = [2.,20.]
for sigma in sigmas:
os.environ['SIGMA'] = str(sigma)
buffer = StringIO()
sys.stdout = buffer
exec(open("parent.py").read())
sys.stdout = sys.__stdout__
result = buffer.getvalue()
print (result)
#print('SIGMA', os.environ['SIGMA'])
buffer.close()
Файл : parent.py
import child
sigma_parent = float(os.environ['SIGMA'])
print (' Parent Function Sigma = ', sigma_parent)
child.my_func();
Файл: child.py
import os
sigma_child = float(os.environ['SIGMA'])
def my_func():
print (' Child Function Sigma = ', sigma_child)
ВЫХОД:
Parent Function Sigma = 2.0
Child Function Sigma = 2.0
Parent Function Sigma = 20.0
Child Function Sigma = 2.0