Наверняка вы замечали, что в 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
Droide teledirigido de R2-D2, una réplica genial con movimientos y sonidos originales, perfectos para los fans de Star Wars #R2D2#StarWars#Droide
https://www.milideaspararegalar.es/producto/droide-teledirigido-r2-d2/
💻www.milideaspararegalar.es
Zapatillas de R2-D2, el robot de la saga Star Wars, para tener los pies calientes con uno de los personajes más representativos de la saga galáctica #R2D2#StarWars#PiesCalentitos
https://www.milideaspararegalar.es/producto/zapatillas-de-r2-d2-star-wars/
💻www.milideaspararegalar.es
Zapatillas de R2-D2, el robot de la saga Star Wars, para tener los pies calientes con uno de los personajes más representativos de la saga galáctica #R2D2#StarWars#PiesCalentitos
https://www.milideaspararegalar.es/producto/zapatillas-de-r2-d2-star-wars/
💻www.milideaspararegalar.es
Droide teledirigido de R2-D2, una réplica genial con movimientos y sonidos originales, perfectos para los fans de Star Wars #R2D2#StarWars#Droide
https://www.milideaspararegalar.es/producto/droide-teledirigido-r2-d2/
💻www.milideaspararegalar.es
В рамках этой выставки Рюичи Охира создал масштабные скульптуры, вырезанные из дерева, с изображением «Тысячелетнего сокола», Дарта Вейдера и штурмовиков. Серия представлена как паблик-арт в общественном пространстве на 1-м этаже Shibuya PARCO.
«Тысячелетний сокол» — это «самый быстрый кусок мусора в галактике», который так часто модифицировался, что явно вышел за рамки законности. Основываясь на концепциях «модификации» и «максимальной скорости», Охира, вооружившись бензопилой и горелкой, создал «Тысячелетний сокол» в масштабе 1/12.
А скульптуры «Дарт Вейдер» и «Штурмовики» он сделал высотой 3 метра.
Место проведения выставки
ПАРКО-МУЗЕЙ ТОКИО СИБУЯ
В рамках выставки выпущена сувенирная продукция с имиджем мастера коллажа Косуке Кавамура, а также капсульная коллекция
adidas Originals × STAR WARS COLLECTION BY NANZUKA
Коллаборация Adidas и ведущих художников галереи «Нанзука»
Organizer: PARCO
Curated by NANZUKA
Cooperation: The Walt Disney Company (Japan) Ltd.
Design: YAR
Да прибудет с вами сила!
More info: https://hypebeast.com/jp/2024/5/parco-star-wars-exhibition-recap-nanzuka-interview
P.S. Фоторепортаж от коллекционера Doping Pong - Марата Н., посетившего обе выставки.
Фото сделаны на
iPhone-14 pro max и Leica Q3
#starwars#parco#museum#tokyo#shibuya#lucasfilm#millenniumfalcon#ryuichiohira#hirokitsukuda#tetsuyanakamura#yoonhyup#jamesjarvis#kosukekawamura#danielarsham#sorayama#bobafett#adidas#darthvader#stormtrooper#yoshirotten#r2d2#c3po