Наверняка вы замечали, что в Python есть удобная функция для получения переменной окружения
os.getenv(NAME)
И её "сестра" для создания или изменения переменных окружения
os.putenv(NAME, VALUE)
Но почему-то putenv() не работает как должно. Энвайромент не обновляется!
os.putenv('MYVAR', '1')
print(os.getenv('MYVAR'))
... и ничего 😴
Почему так?
На самом деле энвайромент обновляется, но это значение не добавляется в словарь os.environ.
Откройте исходник функции os.getenv(). Это просто шорткат для os.environ.get()
В то время как putenv() это built-in С-функция.
Словарь os.environ (или точней класс из MutableMapping) создаётся из энвайромента в момент инициализации. Функция putenv() самостоятельно его не изменяет.
В тоже время, когда вы создаёте или изменяете ключ в os.environ, автоматически вызывается putenv() в методе __setitem__().
То есть, технически putenv() всё делает верно, но в os.environ это не отражается. Можно проверить так:
>>> os.putenv('MYVAR', '123')
>>> os.system('python -c "import os;print(os.getenv(\'MYVAR\'))"')
123
Я объявил переменную в текущем процессе и вызвал дочерний процесс, который её унаследовал и получил в составе os.environ.
Аналогично при удалении переменной вызывается еще одна built-in функция unsetenv(), удаляющая переменную из системы.
Итого
▫️ Удобней всего явно обновлять переменные через os.environ
▫️ Есть способ неявно создать/удалить переменную через putenv/unsetenv, что не повлияет на os.environ но изменит энвайромент и передаст изменения сабпроцессам. Но так лучше не делать!
▫️os.environ это просто обертка для built-in функций putenv() и unsetenv().
#basic
🌎 In Papua New Guinea, the Kaningara people of the Sepik River region perform a crocodile-scarification ritual. Teenage boys undergo elaborate skin-cutting ceremonies that create raised scars resembling crocodile scales, symbolizing a spiritual connection with the river’s sacred crocodiles. The process involves hundreds of cuts and can last several hours. ✨
#ritual⚡#anthropology⚡#tradition
👉subscribe Interesting Planet
👉more Channels
🌎 In Japan, families practice the Obon Festival, where people clean ancestors’ graves and light lanterns to guide spirits home. This Buddhist tradition has been celebrated for over 500 years, with massive lantern floats illuminating rivers in regions like Kyoto. ✨
#culture⚡#ritual⚡#festival
👉subscribe Interesting Planet
👉more Channels
🌎 On the island of Bali, the Ngaben cremation ceremony is a vital tradition where families publicly cremate relatives in elaborate towers and animal-shaped sarcophagi. The ritual represents freeing the soul so it can reincarnate, with some ceremonies drawing crowds of thousands for a single cremation. ✨
#culture⚡#ritual⚡#Bali
👉subscribe Interesting Planet
👉more Channels
Люди Леса — Другие шепоты, другие тени (2023)
С радостью презентуем вам новый альбом нового проекта!
Пишите свои отзывы и ощущения: нам интересно!
Люди Леса - новый проект музыканта и путешественника Александра Старостина и вокалистки Яны Вевы, создающих неповторимую атмосферу сакральных ритуалов, перенесенных из древней эпохи в постапокалиптический мир ближайшего будущего. Народный вокал и этнические инструменты здесь проявляются словно из заметаемых снегом пустых пространств. Тревожное предчувствие грядущих темных времен.
Яндекс музыка: https://music.yandex.ru/album/27881784
Сбер звук: https://zvuk.com/release/31687189
Остальные платформы: https://clck.ru/376BPi
#DarkFolk#Ritual#FolkAmbient
💡🔦Soul Food x figura.fon💡🔦
Вечер электронной музыки с гостями изкреативной студии figura.fon
#electronic#triphop#ambient#experimental#techno#idm#ritual
🕰
13 декабря (суббота)
17:00 – 23:00
👽
Electric Blue
Vanya
Be Kompromissed
Chaika
Unculture Theory
Microamp
Xonwy
nothing is real
📍
Красная Поляна, пер. Ореховый 2а, Soul Food