Наверняка вы замечали, что в 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
🎡 Supreme Spin is about to get even better! 🚀
A new update is coming with bigger rewards 🎁 and an exciting twist: soon, you can use $SING to spin and win! 💎
This is your moment to shine — hold your $SING tight and get ready to aim for the top! Massive prizes await those who are prepared. 🔥
Stay tuned for more details coming soon. Let the spinning madness begin! 🎉
👉#SingSingTycoon#SupremeSpin#SingSingSDK
🚨 Exciting News!🚨
🎉The 1st RUBY Halving event is COMING!
🗓Halving Date: TBA
RUBY plays a crucial role in the SingSing ecosystem. As we progress, our halving events will strategically decrease RUBY supply, rewarding early supporters of the project.
👉 What to expect:
1️⃣50% reduction in RUBY emissions (after Halving point).
2️⃣Increased scarcity, leading to potential value growth.
3️⃣Enhanced economic stability within the SingSing ecosystem.
Prepare for the change and maximize your RUBY holdings! 🌟
#RUBYHalving#SingSingSDK#Event
🎉 Supreme Spin is officially LIVE!
🔥 Get ready for massive rewards and a shot at winning TON right at your fingertips! 💎💰 Don’t miss out—spin now for a chance to grab these incredible prizes! 🎯
#SupremeSpin#TONRewards#SingSingSDK
🎤Announcement | Chat | X (Twitter) | Website | Game
We're thrilled to unveil our latest innovation that's set to revolutionize the Telegram mini-app ecosystem - SingSing SocialFi SDK.
🛠 Our Developer-Friendly SDK brings powerful social and financial features to developers and users alike with:
✅Seamlessly integrate SingSing's features into your Telegram mini-apps
✅Enhance user engagement and monetization opportunities
✅Leverage SingSing club system
✅Use SingSing payment system
🔒 Our SDK is currently being refined with our early partners to ensure a seamless experience. Stay tuned for the public release!
Read more and open treasure at: X Post
#SingSingSDK#TelegramMiniApps#Web3Gaming#SocialFi
🎉 Exciting Partnership Announcement
We're thrilled to introduce our first official partner for the SingSing SocialFi SDK: Cowtopia🐮!
Cowtopia, an innovative farming simulation game, will be the first to integrate our powerful SocialFi SDK. This collaboration marks a significant milestone as we prepare to revolutionize the Telegram mini-app ecosystem.
Stay tuned and see how Cowtopia will utilize our SDK to create an immersive and socially connected gaming experience.
Read more and open treasure at: X Post
#SingSingSDK#Cowtopia#TelegramGaming#SocialFi#FarmingSimulator#ComingSoon