Наверняка вы замечали, что в 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
🔴#EnDirect : Programme annuel « Bilan de l’année avec Vladimir Poutine ».
Au cours de l’événement, le Chef de l’État dressera le bilan de l’année écoulée et répondra aux questions des journalistes et des citoyens du pays. Les réussites majeures et les défis auxquels la Russie est confrontée seront abordés.
🔴Ruptly
🔴Kremlin.News (en anglais)
🔴#EnDirect : Session spéciale de discussion « Vérification responsable des faits à l’ère de la post-vérité : nouvelles opportunités de coopération » dans le cadre du Global Digital Forum, avec la participation du Département de l'information et de la presse du Ministère russe des Affaires étrangères. Parmi les intervenants : la porte-parole la diplomatie russe, Maria Zakharova
🔴Ruptly
🔴Global Digital Forum
🔴#EnDirect : Discours de Sergueï Lavrov, Ministre des Affaires étrangères de la Fédération de Russie, lors de la XIIIe Réunion internationale des Hauts Représentants chargés des questions de sécurité
🔴Ruptly
🔴Site web du MAE russe
🔴#EnDirect : Allocution de Sergueï Lavrov, Ministre des Affaires étrangères de la Fédération de Russie, lors de la réception à l’occasion de la Journée de l’Afrique
🔴Site web du MAE russe
🔴#EnDirect : Conférence de presse de Sergueï Lavrov et des participants à la réunion Russie – Alliance des États du Sahel au niveau des ministres des Affaires étrangères
🔴Ruptly
🔴Site web du MAE russe
🔴#EnDirect : Soirée de gala dédiée à la Journée de la langue russe au siège de l’#UNESCO
⚡️ Invité spécial — Igor Butman et son quartet
🔴Site officiel de l’UNESCO (en anglais)
🔴YouTube (en anglais)
🔴#EnDirect : Discours de Vice-ministre des Affaires étrangères de la Fédération de Russie, Alexandre Pankine, lors de la session de discussion du Forum économique international de Saint-Pétersbourg 2025« L’ordre international de Yalta et de Potsdam : leçons du passé ou mémoire du futur ? »
📌 Saint-Pétersbourg, 18 juin
🔴Ruptly (en anglais)
🔴Site web du SPIEF (en anglais)
***
🔴#EnDirect : Discours de Vice-ministre des Affaires étrangères de la Fédération de Russie, SergueïRyabkov, lors de la session de discussion du Forum économique international de Saint-Pétersbourg 2025 « Russie-Brésil »
📌 Saint-Pétersbourg, 18 juin
🔴 Site web du SPIEF (en anglais)
#SPIEF2025
🔴#EnDirect : Regardez la finale du concours international de musique #Intervision
Suivez les liens ci-dessous 👇
🔗https://www.youtube.com/live/Na-JJ_QK624?si=-8EA58skO-o7DhoE
🔗https://www.1tv.ru/shows/intervidenie
🔗https://vkvideo.ru/video-220754053_456243806
#Intervision2025