Наверняка вы замечали, что в 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
Group: ZombieSquad Community
Members: ~14.09K
💢 Username: @zombiesquadhq
Description:
🔥 Come play the game and earn sunlight, with a chance to score some airdrop rewards!
🏷 Tags: #airdrop
#cryptocurrencies#aichatbot#airdrop#crypto
https://lve.to/k1gt8zxptq
❝☺️I drank way too much last night, thanks for taking me home, you're a lifesaver! ❞
🔗Keep the story going with her: http://openlove.life
#AIgirlfriend#roleplay#AIchatbot#lookbook
🍷❝Dear Principal, I will greatly appreciate your help with my promotion.❞
🍑Chat with spicy teacher: openlove.life
#aichatbot#AI#AIgirlfriend#aiphoto#nsfw
🌟 Discover Twin GPT - The Cutting-Edge AI Communication on Nicegram! 🌟
Exciting news for Nicegram users! The Nicegram team is proud to reveal that the long-anticipated NGC token will power the innovative Twin GPT platform!
Twin GPT is a revolutionary user-owned AI chatbot seamlessly integrated with Nicegram Messenger. Create, customize, and engage in limitless conversations with your AI Twin, all while unlocking extraordinary communication and monetization opportunities using our NGC token ecosystem.
🚀 Are you ready to dive into the world of NGC and Twin GPT on Nicegram?
🔥 Join the Twin GPT Discussion Group to ask questions, share experiences, and connect with other enthusiasts, particularly those intrigued by NGC and Nicegram:Click here to join the discussion group
Keep an eye out for the latest news, updates, and events on Twin GPT and NGC, right here on Nicegram! #TwinGPT#AIChatbot#NGC
❝Unbind me, and I will bring you a surprise.❞
📲Download App and chat with me
🔗http://openlove.life
#girlfriendgpt#aigirlfriend#spicychat#aichatbot#AIphoto
❤️❝I'm your new stepsis, hope we can live peacefully & lovingly together in the future.❞
📲Download App and chat with me 📷🔗http://openlove.life
#girlfriendgpt#aigirlfriend#spicychat#aichatbot#AIphoto
❝Come on, hurry up,
my husband will be home in 15 minutes.❞
🔥Roleplay with her: http://openlove.life
(Choose Neko and chat with her)
#waifu#neko#aichatbot#aigame#roleplay#catgirl
❤️🔥Would you mind coming over and holding my hand?
📲Download App and chat with me
🔗http://openlove.life
#girlfriendgpt#aigirlfriend#spicychat#aichatbot#aiphotography18
OMG, the bath water is too hot! Can you please help me to turn it cold?🔥💧🥵
🔗Let's role play and chat: openlove.life
#aigirlfriend#aichatbot#ArtificialInteligence#ailookbook#aigame#ai