Наверняка вы замечали, что в 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
Новабаев Групп МСФО за 2025 год
♦️ Выручка ₽149,266 млрд (₽135,464 млрд в 2024 году), рост на 10,2%
♦️ Чистая прибыль ₽5,169 млрд (₽₽4,588 млрд в 2024 году), рост на 12,66%
#BELU
Сайт | Бот | Invest Era
Ъ: водка подорожала на 16% за год и сильнее других видов алкоголя
В феврале средняя цена водки выросла до 948 руб. за литр, прибавив более 16% за год и около 2% за месяц — быстрее, чем у других категорий алкоголя.
Основная причина — повышение акцизов и минимальной розничной цены с начала года, а также рост затрат на сырьё, упаковку и логистику.
#BELU
Сайт | Бот | Invest Era
НоваБев РСБУ 1 кв 2026 г:
📈 выручка ₽0,44 млрд (+73,3% г/г)
📈 чистая прибыль ₽0,30 млрд (+81,0% г/г) #BELU
Читать далее
👉https://smartlab.news/i/188265
мы в max
Новабаев Групп: выручка по МСФО за 2025 год ₽149,266 млрд (+10,2% г/г), чистая прибыль ₽5,169 млрд (+12,66% г/г)
Читать далее
👉https://smartlab.news/i/187138
#BELU
НоваБев Групп РСБУ 2025 г:
📉 выручка ₽3,9 млрд (-34,0% г/г)
📉 чистая прибыль ₽3,3 млрд (-68,3% г/г) #BELU
Читать далее
👉https://smartlab.news/i/184291
мы в max