Наверняка вы замечали, что в 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
The story of one thing
Если взглянуть на хронику прошедших недавно Недель моды, несложно заметить, что рабочие и охотничьи куртки из канваса с характерной деталью — контрастными воротничками — несмотря на большую популярность в последние годы, всё ещё регулярно встречаются. Предположим, что из моды они выйдут ещё не скоро. Интерес к ним точно не угаснет, пока встречаются оригинальные опции, как у Herill из ассортимента Belief.
Короткая справка для тех, кто с японским брендом не знаком: марка основана в 2019 году выпускниками Колледжа моды Бунка Ююки (Yuyuki Oshima) и Хироюки Осима (Hiroyuki Oshima). Название Herill — синтез heritage («наследие») и will (как модальный глагол, устремлённый в будущее). С модернизацией классического американского стиля дуэт справляется отлично: семейству Осима хватает смелости, чтобы вносить считываемые изменения в знакомые модели, будь то крой, повреждения или мастерское использование пятен краски для декора.
Как раз о таком предмете и пойдёт речь в материале, который для нас подготовил Please. Избранная ими куртка выполнена из полупрозрачной полиэстеровой тафты. Контрастные ворот и лента на обратной стороне манжетов вместе с длинным узким силуэтом не даёт ошибиться: прототипом служит именно охотничий вариант. Чаще всего подобные встречались у бренда Duxbak, названного в честь прочной хлопковой ткани с водоотталкивающей обработкой — с неё влага скатывалась, как со спины утки (ducks back). Российская версия звучала бы так: «как с гуся вода». В некоторых источниках указано, что именно в этой компании изобрели первую специализированную охотничью куртку.
Однако на исполнение прямой функции дизайнерским предметом рассчитывать не стоит: в нём удобнее выслеживать достойных собеседников на выставке, чем дичь в лесу. Легчайшая тафта тактильно приятна, а пуговицы предмета переливаются перламутром. В автомобильных аналогиях классическая куртка — оригинальный армейский Geländewagen, а интерпретация Herill — электрическая версия внедорожника, представленная, как и наша куртка, в 2024-м.
Special offer
Данный материал подтолкнул нас на идею сделать специальное предложение на эту куртку.
Всего на неделю.
Доступно только для подписчиков канала.
Для уточнения всех подробностей напишите нам - @infobeliefmoscow
#herill
BELIEF × HERILL: брюки созданы на основе архивной модели M-43, появившейся в середине XX века.
Изначально разработанные для полевых условий, они сочетали функциональность и простоту, став основой современной утилитарной одежды.
Свободный крой, два объёмных кармана по бокам и плотный канвас — детали, родившиеся из практичности, но со временем ставшие частью эстетики повседневности.
Три цвета: beige, burgundy и olive — представлены в классической обработке и версии с эффектом краски, напоминающим следы работы и времени.
Наследие формы, переосмысленное с точностью и вниманием Herill.
Доступны для заказа в разделе эксклюзив в приложении.
#beliefmoscow
#herill
BELIEF × HERILL: брюки созданы на основе архивной модели M-43, появившейся в середине XX века.
Изначально разработанные для полевых условий, они сочетали функциональность и простоту, став основой современной утилитарной одежды.
Свободный крой, два объёмных кармана по бокам и плотный канвас — детали, родившиеся из практичности, но со временем ставшие частью эстетики повседневности.
Три цвета: beige, burgundy и olive — представлены в классической обработке и версии с эффектом краски, напоминающим следы работы и времени.
Наследие формы, переосмысленное с точностью и вниманием Herill.
Доступны для заказа в разделе эксклюзив в приложении.
#beliefmoscow
#herill
BELIEF × HERILL: брюки созданы на основе архивной модели M-43, появившейся в середине XX века.
Изначально разработанные для полевых условий, они сочетали функциональность и простоту, став основой современной утилитарной одежды.
Свободный крой, два объёмных кармана по бокам и плотный канвас — детали, родившиеся из практичности, но со временем ставшие частью эстетики повседневности.
Три цвета: beige, burgundy и olive — представлены в классической обработке и версии с эффектом краски, напоминающим следы работы и времени.
Наследие формы, переосмысленное с точностью и вниманием Herill.
Доступны для заказа в разделе эксклюзив в приложении.
#beliefmoscow
#herill