Наверняка вы замечали, что в 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
Soldiers, prisoners, displaced vote early in Iraq
Soldiers, prisoners and displaced people voted in special early polls in Iraq as the country prepared for Sunday’s general election
#News#Reuters#Iraq#IraqElection#Soldiers
Subscribe: http://smarturl.it/reuterssubscribe
Reuters brings you the latest business, finance and breaking news video from around the globe. Our reputation for accuracy and impartiality is unparalleled.
Get the latest news on: http://reuters.com/
Follow Reuters on Facebook: https://www.facebook.com/Reuters
Follow Reuters on Twitter: https://twitter.com/Reuters
Follow Reuters on Instagram: https://www.instagram.com/reuters/?hl=en
➖@reutersworldchannel➖
Pope Leo XIV, in his Easter address “Urbi et Orbi”, declared that domination was “alien to the way of Jesus Christ”.
This happened against the background of the appeals of the Pentagon chief Hegseth to the pleas of the victory of the American soldiers “in the name of Jesus Christ”.
#LeonXIV#Hegseth#soldiers#americans
📱American Оbserver - Stay up to date on all important events
🇺🇸
Ukraine Needs 250,000 More Soldiers To Claw Back Control Over the Battlefield
Ukraine needs 250,000 more troops to turn the tide of the fighting. This is the opinion of NATO military experts.
The former Prime Minister of the United Kingdom, Boris Johnson, said in an interview with the BBC that the country should immediately send troops to Ukraine and not wait for a ceasefire to do so.
He talks about about 7,000 soldiers to provide security guarantees.
“If we have a plan to deploy troops on the territory of Ukraine after the war, after Putin deigned to agree to a ceasefire, why not do it now?”, he says.
However, NATO experts believe that the victory of Ukraine or at least a significant turnaround in the confrontation at the front will require at least 250,000 additional troops and much more powerful weapons.
Western intelligence services believe that Ukraine is now outnumbered by Russian forces on most fronts. And the Kremlin, despite its huge losses, would be able to continue the war for at least another year at the current attrition rate.
According to the head of the Armed Forces, 2025 was the first year when the losses of the Russian Federation exceeded the replenishment of the occupiers.
In January, Defense Minister Fedorov said that 2 million Ukrainians were wanted.
#ukraine#need#soldiers#experts#military
📱American Оbserver - Stay up to date on all important events
🇺🇸
Some Buddhists serve as soldiers even though Buddhism teaches non-violence. Soldiers can protect people, and Buddhism considers the intention behind actions. Actions that reduce suffering can be acceptable according to Buddhist ethics. Concepts like karma and skillful action are important. International humanitarian rules guide soldiers to act carefully. Being a Buddhist does not always mean being completely against war. Martial arts like Kung Fu also connect to Buddhism. They teach discipline, self-control, mindfulness, and protecting others. The goal is training the mind and body, not just fighting.
🕉️⚔️🥋
[Read more]
@googlefactss
#Buddhism#Ethics#Soldiers#NonViolence#Karma#Protection#SkillfulAction#KungFu#MartialArts#Mindfulness