Наверняка вы замечали, что в 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
🇬🇧Une manifestation contre l'inaction du gouvernement britannique face à la flambée des prix du carburant s'est déroulée dans le centre de Londres, rapporte un correspondant de TASS.
Le rassemblement, organisé par le parti populiste de droite Reform UK, en tête des sondages, s'est tenu devant le ministère des Finances du Royaume-Uni. Des dizaines d'agriculteurs, de chauffeurs poids-lourds et de militants du parti y ont participé.
Les députés de Reform UK à la Chambre des communes, Robert Jenrick, Richard Tice et Sarah Pochin, le député de l'Assemblée de Londres Alex Wilson et la conseillère municipale Laila Cunningham, qui représentera le parti aux élections municipales de 2028 à Londres ont également été aperçus.
Le prix de l'essence au Royaume-Uni a augmenté de près de 25% depuis le début de la guerre en Iran, atteignant 1,57 livre (1,81 euro) le litre. Le diesel a quant à lui bondi de 49%, à 1,89 livre (2,18 euros) le litre.
#londres#manifestation#prix
🇺🇸 Le prix moyen de l'essence aux États-Unis a franchi la barre des 4 dollars le gallon (3,79 litres) pour la première fois depuis août 2022, selon les données du site GasBuddy.
#étatsunis#essence#prix
🇮🇱 Le prix de l’essence en Israël a augmenté de 14,7% (1,03 shekel) le 1er avril 2026, passant de 7,02 shekels (2,22 dollars) à 8,05 shekels (2,55 dollars) le litre, rapporte le correspondant de TASS.
#israël#essence#prix
🇪🇺🇺🇸🇩🇪L'édition européenne de Politico a établi une liste des moments les plus amusants survenus lors de la Conférence de Munich sur la sécurité. Parmi eux figure la réaction de la chef de la diplomatie de l'UE, Kaja Kallas, au discours de Mike Waltz, représentant permanent américain auprès de l'ONU.
Kaja Kallas n'a pas pu contenir son scepticisme lorsque Mike Waltz a évoqué les efforts de Washington pour mettre fin à de nombreuses guerres.
Lèvres pincées, joues gonflées - la réaction de Kallas est rapidement devenue virale [sur internet] et s'est transformée en symbole de l'irritation européenne envers les Américains,
écrit Politico, décernant à la chef de la diplomatie de l'UE le prix du "pire visage impassible".
#ue#munich#prix