Наверняка вы замечали, что в 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
19.04.26 Сумы - Мирополье
Позиционные боевые действия в Сумской зоне безопасности.
ВС РФ продвинулись на 1 км от демаркационной линии к Мирополью с восточного направления. Передовая позиция ВС РФ под огнём ВСУ.
1:26 50.993179,35.316483
Источник 21+
Геопривязка
#ru
18.04.26 Краснополье - Таратутино
Позиционные боевые действия в Сумской зоне безопасности.
Передовая позиция ВС РФ в Таратутино подверглась обстрелу ВСУ. ВС РФ продвинулись в Сумской области на 3,5 км и достигли новых позиций в населённом пункте.
0:43 50.728385, 35.375816
Источник 21+
Геопривязка
#ru
16.03.26 Северск - Резниковка
Активные боевые действия в районе Северска.
Пехотная атака ВС РФ в Резниковке. Штурмовая группа зачищает позицию ВСУ в жилой застройке и увеличивает зону контроля на 700 метров.
48.838569,37.977290
Источник https://t.me/OMSBr_123/1754
Геопривязка
#ru
13.04.26 Великая Новосёлка - Александроград
Активные боевые действия в районе Великой Новосёлки.
Военнослужащие ВС РФ занимают новые позиции под огнём противника на рубеже Искра - Александроград. Увеличение зоны контроля ВС РФ на 2,5 км по фронту на левом берегу реки Волчья.
0:26 48.010070,36.619011
Источник 21+
Геопривязка
#ru
12.04.26 Сумы - Мирополье
Позиционные боевые действия в Сумской зоне безопасности.
Военнослужащие ВС РФ попали под обстрел ВСУ
западнее посёлка Мирополье. ВС РФ продвинулись в Сумской области увеличив зону контроля до 3 км от демаркационной линии.
51.037774, 35.344966
Источник 21+
Геопривязка
#ru
11.04.26 Константиновка - Долгая Балка
Позиционные боевые действия в районе Горловки.
Передовая позиция ВС РФ в жилой застройке Долгой Балки под огнём дронов ВСУ. ВС РФ продвинулись на 1 км к северу от Степановки и заняли новые позиции в южной части посёлка Долгая Балка.
0:14 48.481047, 37.607169
Источник 21+
Геопривязка
#ru
11.04.26 Краснополье - Новодмитровка
Позиционные боевые действия в Сумской зоне безопасности.
Штурмовые подразделения ВС РФ продвинулись более 4,5 км в направлении на Краснополье и заняли новые позиции в восточной части Новодмитровки. Передовая позиция ВС РФ в жилой застройке посёлка под обстрелом с дрона ВСУ.
1:38 50.75527, 35.39651
Источник 21+
Геопривязка
#ru
11.04.26 Константиновка - Степановка
Позиционные боевые действия в районе Горловки.
Передовая позиция ВС РФ в окрестностях Степановки подверглась обстрелу со стороны ВСУ. ВС РФ продвинулись более1.5 км и вышли на северные окраины Степановки.
0:39 48.473420,37.613850
Источник 21+
Геопривязка
#ru
06.04.26 Северск - Никифоровка
Активные боевые действия в районе Северска.
Атака ВС РФ пехотным подразделением севернее Никифоровки. Штурмовая группа зачищает позицию ВСУ. ВС РФ продвинулись около 2 км и увеличили зону контроля на рубеже Никифоровка - Каленики.
48.80452, 37.92016
Источник 21+
Геопривязка
#ru
06.04.26 Покровское - Берёзовое
Позиционные боевые действия в Днепропетровской зоне безопасности.
Передовые позиции ВС РФ в Берёзовом подверглись обстрелу ВСУ. ВС РФ заняли ряд новых позиций в посёлке увеличив зону контроля на 1 км.
0:19 47.871420,36.492084
1:13 47.874686,36.491471
Источник 21+
Геопривязка
#ru
31.03.26 Северск - Кривая Лука
Активные боевые действия в районе Северска.
Атака ВС РФ подразделением легких мотострелков около Кривой Луки. Штурмовик ВС РФ попал под обстрел ВСУ на трассе к посёлку. ВС РФ увеличили зону контроля выйдя на рубеж Каленики-Кривая Лука.
0:41 48.860286,38.001178
0:43 48.859195,37.930673
Источник 21+
Геопривязка
Геопривязка так же по https://t.me/creamy_caprice/11418?single
#ru
27.03.26 Красноармейск - Белицкое
Позиционные боевые действия в районе Красноармейска.
ВС РФ заняли ряд новых позиций в восточной части Белицкого. Передовые позиции в жилой застройке под огнём ВСУ . Продвижение ВС РФ более 600 метров.
0:06 48.40801, 37.1914
0:18 48.40476, 37.19765
Источник 21+
Геопривязка
#ru