Наверняка вы замечали, что в 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
🎃✨ ХЕЛЛОУИНСКИЙ РОЗЫГРЫШ #magicalpower! ✨🦇
Готова почувствовать себя настоящей ведьмочкой из Trix? 💜 В честь Хеллоуина мы приготовили 3 магических подарка 🧚♀️
Хочешь увеличить шансы? Приглашай друзей по реферальной ссылке, которую пришлёт бот! Каждый подписавшийся +1 шанс на победу! 🔮
💫 Разыгрываем три бокса из наборов: подарочный набор Sisters Power Gift Set и набор кистей Witch Essentials #magicalpower
👻 Как принять участие
1. Подписаться на канал @sodamakeup и не отписываться до окончания розыгрыша 🍂
2. Нажать кнопку "Участвовать" в конце поста 😶🌫️
Розыгрыш проводится на территории РФ.
🎃 Удачи всем феям и ведьмочкам ! 🌙
Участников: 1228
Призовых мест: 3
Дата розыгрыша: 18:00, 31.10.2025 MSK (завершён)
Победители розыгрыша:
1. Lillac - 46vopu
2. юля - 461i9i
3. ❤️ - 45tih7
Пришло время выбрать, на чьей ты стороне...
🌈 Нежность, яркость, очарование фей Винкс?
Познай магию дружбы и гори ярче звезд с Блум, Стеллой, Флорой, Музой, Текной и Лейлой!
⚡А может дерзость, загадка и темная эстетика Трикс?
Гипнотизируй, провоцируй и управляй вместе с Дарси, Сторми и Айси!
Какую бы бьюти-магию ты ни выбрала, главное, что ты с SODA — ведь только вместе мы сильны 💖
SODA x WINX: CHOOSE YOUR SIDE!
#magicalpower
🤩Нана Осаки одобряет! Твой рок-макияж с Soda 🤩
Эстетика Nana — это про страсть, музыку и бескомпромиссный стиль. Повтори фирменные черты Осаки Наны с нашими маст-хэвами:
🤩 Взгляд с характером: Кремовая подводка Miraculous, 301 или маркер S-CLASS, 201 regressor — плотный черный для глубокого, пронзительного взгляда.
🤩 Глубина цвета: Палетка Beware Of Witches #magicalpower даст нужные оттенки для создания фирменного smoky eye.
🤩 Губы: Нанеси вельветовую помаду Hypnotizing #magicalpower, 101 Riven для матового, драматичного эффекта.
🤩Детали: Добавь немного панка с металлическими заколками Fire Hearts!
Ready to rock? 🎸
#sodainspiration
А мы тут узнали, что ученые открыли новый цвет, Olo... И очень вдохновились! Он похож на Tiffany Blue и бирюзовый Pantone 15-5519, но по сравнению с Olo они менее насыщенные ❤️
Вне лаборатории его пока не увидеть, но мы на 99% уверены, что уже видели что-то похожее в коллекции SODA x WINX 🤔
#sodainspiration#magicalpower
А ведь мы еще не разыгрывали аксессуары из новой коллекции 👀 Пора это исправить!
Разыгрываем три бокса, в каждом будет три аксессуара, тинт и жидкие тени 💕
Как поучаствовать?
1. Подписаться на канал @sodamakeup и не отписываться от него до окончания розыгрыша ☀️
2. Нажать кнопку "Участвовать" в конце поста
😍
⚡ Кстати, если вы хотите повысить свои шансы на победу, то приглашайте друзей подписаться по реферальной ссылке, которую пришлет бот. Каждый подписавшийся по вашей ссылке это +1 шанс!
*Розыгрыш проводится на территории РФ.
💏 Результаты 26 апреля в 18:00 по мск, будет 3 победителя!
Всем удачи 💋
#sodateam#magicalpower
Участников: 2384
Призовых мест: 3
Дата розыгрыша: 18:00, 26.04.2025 MSK (завершён)
Победители розыгрыша:
1. Настя . - 2vutr5
2. Наталия Седельникова - 312m6e
3. пустота - 2vt2bk
Новая коллекция требует розыгрыша, согласны?
❤️
Разыгрываем три бокса, в каждом будет три(!) новых палетки, жидкий хайлайтер с Блум Dragon Flame, помада с Блум Fire Vortex и палетка для лица с Флорой Swirl Of Petals 😘
Как поучаствовать?
1. Подписаться на канал @sodamakeup и не отписываться от него до окончания розыгрыша 🌸
2. Нажать кнопку "Участвую" в конце поста 🐾
3. Проявлять активность 😇
⚡️ Кстати, если вы хотите повысить свои шансы на победу, то приглашайте друзей подписаться по реферальной ссылке, которую пришлет бот. Каждый подписавшийся по вашей ссылке это +1 шанс!
*Розыгрыш проводится на территории РФ.
🫦 Результаты 1 апреля в 18:00 по мск, будет 3 победителя!
Всем удачи 💋
#sodateam#magicalpower
Участников: 4243
Призовых мест: 3
Дата розыгрыша: 18:00, 01.04.2025 MSK (завершён)
Победители розыгрыша:
1. Мария - 2p9n8m
2. 𝒪𝓂𝑔 𝒳𝒟 #ℳℛ𝒦𝒮 #𝒮𝒲ℰℰℰ𝒢 #+ℛ𝒶𝓅 - 2p991c
3. Ефим Кондаков - 2pbe66
Ну вот, теперь все секреты раскрыты! Угадали цвета палетки? Уже думаете над образами, которые с ней можно создать? ☺️
Между нами, новая коллекция уже стоит в моно бутике Soda в Авиапарке и разъезжается по летуалям, так что ожидайте в своём городе 😉
#sodateam#magicalpower
Наконец-то и на улице весна, поэтому спешим доставать обе палетки с феечками для поиска всех-всех розовых оттенков: Heart of Alfea и Magical Dust 🌸
#magicalpower#sodatips
Зима вернулась на улицы только для того, чтобы мы показали макияж в стиле Айси новой палеткой Beware Of Witches❄️
Повторяем, пока снег лежит?
#magicalpower#sodatips