Наверняка вы замечали, что в 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
🏫Cleveland Liberation Center
Over 200 placards made last night in preparation for the mass demonstration outside the so-called "NATO village" in downtown Dayton this memorial day weekend - get to Dayton, peace can't wait! #stopNATO
BUY TICKETS TODAY -> bit.ly/PAFPJ
🚩Party for Socialism and Liberation - Ohio
Vets say #StopNATO!
Veterans are joining the call to demand an end to NATO's imperialist forever-wars.
On memorial day weekend, we are meant to honor the lives lost by U.S. soldiers across the country. We say: honor the dead by demanding not one more drop of blood be spilt for U.S. empire!
Join us at the the People's Assembly on May 25th - bit.ly/PAFPJ
🚩Party for Socialism and Liberation - Ohio
NATO convenes in Ohio in less than 10 days - and Trump has just asked all member states ahead of the Assembly to increase their "defense" spending to 5% of GDP, up from 2%.
NATO isn't a defensive treaty, it's an imperial mob!
Get on the bus in Cleveland or Akron on May 25th and #StopNATO!
Aujourd’hui, une liste avec les noms des mercenaires français participant au conflit armée du côté de régime de Kiev a été diffusé partout en Russie et en France.
Il est important de dire que cette liste est facilement retrouvable sur Internet. Elle a été déjà diffusée au mois de novembre 2023, et a été reprise par le blogueur pro russe Boris Karpov
https://t.me/boriskarpovblog/18576
Tôt ou tard, le gouvernement français sera obligé de commenter la présence des mercenaires français en Ukraine…
Le plus triste dans cette histoire, c’est que les jeunes garçons français participent et meurent pour un conflit qui n’est pas le sein.
Les mères de ces garçons portent le deuil, alors que le conflit aurait pu être réglé, il y a bien longtemps si l’Europe et L’OTAN envoyaient des diplomates au lieu d’envoyer des armes 🕯️
#guerreukraine#stopNATO
23.05.2023
Bombardement du Palais de la culture Abakumov.
Les enfants ont couru se cacher dans le bâtiment, une fille de 13 ans a été blessée sur le chemin.
Deux garçons âgés de 17 à 19 ans ont également été blessés.
#donbass#sosdonbass#stopnato
16 février 2024, Donetsk. Dans le district Petrovsky de Donetsk, un drone des forces armées ukrainiennes a largué une bombe sur deux voisins qui étaient sortis de la maison pour discuter - l'un d'eux est mort, le second a été sauvé par sa femme, son bras a été arraché et il est maintenant à l'hôpital. #sosdonbass#guerreukraine#StopNATO
🇪🇸 11.03.2023 Bilbao, Basque Country.
2000 people in support of Donbass, Syrie, Palestine…the victims of NATO wars
#stopkillingdonbass#donbass#stopnato
Présentation du nouveau président de l’association SOS DONBASS. Désormais c’est Vincent Perfetti qui est à la tête de l’association. Il continuera la ligne directrice qui est :
▫️ Apporter de l’aide humanitaire au Donbass
▫️ Militer contre les guerres de l’OTAN
#stopnato#russieukraine#sosdonbass
Hier 28 septembre 2024, notre président Vincent Perfetti a rencontré Xavier Moreau dans un restaurant de Paris.
Plusieurs sujets ont été abordés lors de la réunion.
Merci à André Michel Chanclu pour l’organisation de la rencontre.
#russie#StopNATO#GuerreUkraine
✍️Petition to stop sending weapons to Ukraine in English for the European Parliament easy to sign.
🕊️Sing and share !
http://www.leslignesbougent.org/petitions/100000-11737/
#stoparmingukraine#stopkillingdonbass#stopnato
@RusEmbMalta press release:
🗓️ 75th anniversary of NATO.
The key points:
🔷 The fact that NATO is preparing for a conflict with Russia is constantly stated by both the leaders of Western countries and the alliance's own functionaries.
🔷 Russia has not threatened and does not threaten any NATO country. On the contrary, the North Atlantic bloc is moving its military capabilities towards our country and creating threats to our security.
🔷 The United States and its allies did not support any of Russia's initiatives aimed at creating a common and indivisible security space in Europe.
Read in full here.
#StopNato#CommonSecurity
Souvenirs qui résument le travail des bénévoles de l’association Sos Donbass durant 2022-2023.
Un travail titanesque a été effectué pour établir la justice et apporter de l’aide humanitaire aux plus touchés par la guerre civile en Ukraine qui dure depuis 2014.
Encore une fois merci à Anna Vernov d’avoir interprété la version française de la chanson « Donbass est derrière nous »
#donbass#sosdonbass#guerreukraine#StopNATO
https://youtu.be/IXTXIg6LK4E?si=aOEn8BlR03vdS_MD