В Python, я могу получить доступ к переменной среды как:Определите, как была установлена переменная окружения
os.environ['FOO']
Я хотел бы знать, если переменная была установлена ранее с помощью export
или, если он был установлен только для текущего сценария питона как так:
FOO=BAR python some-script.py
в основном я хочу использовать только FOO
, если он был установлен, как в строке выше и не постоянно определяется в export
.
Аргументы к самому скрипту python, к сожалению, здесь отсутствуют. Это плагин, и родительское приложение не позволяет передавать пользовательские аргументы, которые он сам не понимает.
Я надеялся, что каким-то образом я смог получить доступ к точной и полной команде (FOO=BAR python some-script.py
), которая запустила python, но похоже, что ничего подобного нет. Я думаю, если бы существовала такая функция, это было бы где-то в пакетах os
или sys
.
Как оболочка определяет, что env для передачи исполняемой программе не является чем-то, о чем должна заботиться программа, поэтому часть FOO = BAR обрабатывается только оболочкой, она не подвергается каким-либо образом, поэтому вы пытаетесь сделать невозможно. – mata
Это так же плохо, как и функции, которые ведут себя по-разному в зависимости от того, как они были вызваны. Это ужасная идея. Почему вы вынуждаете абонента использовать определенные соглашения, что на самом деле может быть чрезвычайно громоздким? Возможность «экспортировать FOO = BAR», а затем * не * необходимость повторного прохождения аргумента - это инструмент удобства; почему запрещают пользователям использовать его? – deceze
Поскольку, как описано, использование окружения vars просто является обходным путем для того, чтобы не было возможности передавать пользовательские аргументы. Тем не менее это аргумент и должен вести себя как один. По умолчанию, что было определено на прошлой неделе, нет опции. Мы говорим здесь об управлении удаленными системами, а какая система изнашивается и переустанавливается, я ничего не хочу отбирать из среды только из-за ошибки пользователя. – udondan