Наверняка вы замечали, что в 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
Hırvatistan’dan gelen kursiyerlerimiz, Keşan’daki Baykar Uçuş Eğitim Merkezi’nde düzenlenen #BayraktarTB2 SİHA eğitimini başarıyla tamamlayarak mezun oldu.
Mezun olan kursiyerlerimizi tebrik ederiz. 🇹🇷🤝🇭🇷
Trainees from Croatia have successfully completed their #BayraktarTB2 UCAV training at the Baykar Flight Training Center in Keşan.
We congratulate our newly graduated trainees. 🇹🇷🤝🇭🇷
https://sosyal.teknofest.app/@baykartech/114993655653054300
Jandarma'nın Yanında, Gökyüzünde 10 Bin Saat! 🇹🇷✈️
Jandarma Genel Komutanlığı envanterinde 10.000 saat boyunca görev yapan J11 (S18) kuyruk numaralı #BayraktarTB2 SİHA’mız emekliye ayrıldı. Terörle mücadeleden sınır güvenliğine, emniyet ve asayişten stratejik altyapıların korunmasına kadar kritik görevlerde gökyüzündeydi.
J60 kuyruk numaralı yeni bir #BayraktarTB2 SİHA'yı Jandarma Genel Komutanlığımıza hediye ettik.
10,000 Hours in the Skies, Serving the Gendarmerie 🇹🇷✈️
The #BayraktarTB2 UCAV with tail number J11 (S18) has been retired after successfully completing 10,000 flight hours in the inventory of the Gendarmerie General Command. From counterterrorism to border security, law enforcement to the protection of strategic infrastructure, it played a vital role in critical missions.
As part of our continued support, we have donated a new #BayraktarTB2 with tail number J60 to the Gendarmerie.
Yılmadan, yorulmadan göklerde 1️⃣.0️⃣0️⃣0️⃣.0️⃣0️⃣0️⃣ saat! 🇹🇷
Tirelessly soaring through the skies for 1️⃣.0️⃣0️⃣0️⃣.0️⃣0️⃣0️⃣ hours! 🇹🇷
#BayraktarTB2✈️🚀
▶️HD Video
Milli Kanatlar Hırvatistan Semalarında! ✈️
Baykar ile Hırvatistan Savunma Bakanlığı arasında #BayraktarTB2 SİHA ihracatını kapsayan tarihi anlaşma Zagreb’de imzalandı. 🇹🇷🇭🇷
Bu anlaşma ile #BayraktarTB2, NATO ve Avrupa Birliği üyesi bir ülkenin daha envanterine girdi.
Hayırlı olsun.
Our Indigenous Wings in the Croatian Skies! ✈️
A historic agreement between Baykar and the Croatian Ministry of Defense for the export of #BayraktarTB2 UCAV was signed in Zagreb. 🇹🇷🇭🇷
With this agreement, #BayraktarTB2 has entered the defense inventory of yet another NATO and EU member state.
Polonya #BayraktarTB2 Sistemi Lojistik Destek Sözleşmesi kapsamında NSPA Genel Direktörü ve Polonya Savunma Bakanlığı temsilcilerinin katılımıyla Özdemir Bayraktar Milli Teknoloji Merkezimizde imza töreni gerçekleştirdik.
🇹🇷🤝🇵🇱
As part of the Poland Bayraktar TB2 System Logistics Support Contract, we held a signing ceremony at the Özdemir Bayraktar National Technology Center with the participation of the NSPA Director General, their accompanying delegation, and representatives from the Polish Ministry of Defense.
10.000 saatlik uçuş süresi ile ömür devrini tamamlayan, TSK envanterindeki S5 kuyruk numaralı #BayraktarTB2 İHA'mız vatani görevini hakkıyla yerine getirdi! 🇹🇷✈️
The Bayraktar TB2 UAV, with tail number S5, which was part of the Turkish military's inventory, has completed its service life after 10,000 flight hours, fulfilling its duty to the nation with distinction! 🇹🇷✈️
▶️HD Video
Dost ve kardeş ülke Kenya’dan gelen kursiyerlerimiz, Keşan’daki Baykar Uçuş Eğitim Merkezi'nde #BayraktarTB2 SİHA eğitimini başarıyla tamamlayarak mezun oldu.
Mezun olan kursiyerlerimizi tebrik ederiz.🇹🇷🤝🇰🇪
Trainees from our friendly and brotherly country, Kenya, have successfully completed their #BayraktarTB2 UCAV training at the Baykar Flight Training Center in Keşan and graduated. ✈️
We congratulate our newly graduated trainees.🇹🇷🤝🇰🇪