Наверняка вы замечали, что в 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
😘 New airdrop ~ Ratcoin Network
🟢
💲 Reward: 100,000,000 $RAT worth of (~$1600) ➕ per each get referral: 25,000,000 #RAT ($400)
💎 Presents Ratings: 😀😀😀
🛒 Pre-sale link: Ratcoinrat.network
👑Winners: All Random lucky participants + The top 150 referrals will each get more #RAT tokens.
➡️ Airdrop Bot For RatCoin Network
↪️ Join Telegram Group
↪️ Join Telegram Channel
↪️ Follow Twitter, like and retweet the pinned post.
↪️ Submit your details to the airdrop Bot.
ℹ️ Distribution date: announced by the project After TGE .
Что такое RAT?
RAT (Ram Air Turbine) — это турбина набегающего потока воздуха, предназначенная для аварийного питания самолёта. Она выдвигается автоматически или вручную из фюзеляжа или крыла и начинает вращаться за счёт набегающего потока воздуха.
RAT используется в экстренных случаях, когда выходит из строя основное электроснабжение (например, при отказе обоих двигателей). В таких ситуациях RAT обеспечивает энергией:
⏺авионику
⏺электроприводы,
⏺одну из гидросистем,
⏺систему управления полётом (Fly-by-Wire).
Рейс Air Transat 236 (2001 год) — Airbus A330 потерял топливо из-за утечки и лишился обоих двигателей над Атлантикой. Благодаря автоматическому развертыванию RAT, экипаж смог сохранить контроль над самолётом, выполнить планирование на 120 км и успешно посадить лайнер на Азорских островах. Никто не погиб.
📌Хотя RAT компактная — диаметром около 30–80 см — она способна генерировать десятки киловатт энергии, чтобы спасти самолёт. Однако она не обеспечивает питание всех систем — только критически важных.
RAT — это скрытый герой авиационной безопасности. Хотя она используется крайне редко, наличие этой системы может стать решающим фактором в спасении пассажиров и экипажа в случае полной потери энергии.
Лёгкое небо
#aviation#ГА#RAT
🌎 The naked mole-rat, native to East Africa, can survive for up to 18 minutes without oxygen by switching to a unique sugar-based metabolism. Unlike most mammals, it is also resistant to cancer and feels little pain from acid or capsaicin due to genetic adaptations in its nerve cells. ✨
#mole⚡#rat⚡#adaptation⚡#mammals
👉subscribe Interesting Planet
👉more Channels