#python-3.x #docker #environment-variables
#python-3.x #докер #переменные среды #docker
Вопрос:
Я не знаю, имеет ли нахождение внутри контейнера docker какое-либо отношение к проблеме, но для протокола я запускаю все внутри контейнера.
Я попытался запустить этот скрипт
import os
os.environ['A_VAR']='aValue'
thevalue=os.environ.get('A_VAR',None)
print(thevalue)
с помощью этого я устанавливаю для среды A_VAR
некоторое значение, и я могу видеть его по заданной печати
затем я запускаю следующее
import os
'
thevalue=os.environ.get('A_VAR',None)
print(thevalue)
и нет, значение не задано.
Запуск `printenv` также показывает, что значения не установлены.
Почему установка переменной окружения не работает и как это должно быть сделано?
Ответ №1:
Переменные среды являются локальными для процесса, устанавливающего его, и всех процессов, порожденных из него (они наследуют среду). Таким образом, вы можете настроить среду для дочерних процессов, но не для родительских.
Ваш скрипт python выполняется как его собственный процесс, поэтому любые изменения, внесенные им в среду, исчезают при завершении этого процесса.
Комментарии:
1. Итак, есть ли какой-либо способ установить переменные среды с помощью скрипта с сохранением изменений? или это невозможно?
2. Это было бы возможно только в том случае, если это происходит в том же процессе, например, в сценарии оболочки, который создается, а не выполняется.
3. Я понимаю. Поэтому необходим сценарий оболочки, и python нельзя использовать…