Наверняка вы замечали, что в 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
JetTon Games: Tarot Forecast from May 5 to May 11
#JetTon#Tarot
JetTon Games presents a Tarot forecast based on the last digit of your phone number, helping you discover lucky days. Each number corresponds to a Tarot card, offering unique advice for the week.
Source: link
@tonlines
Бог не играет в кости; ведь уже существует готовая колода Таро: gli schemi inumani.
Её предзаказом и последующим распространением в массы по моей просьбе готов заниматься @LeGrandHamster. Торопитесь! Торопитесь! Ну, или не торопитесь, никуда она уже не денется.
Возможно погадать прямо в ближайшие дни — есть экземпляр с тестовой печати, но он стоит совершенно бешеные четыре тысячи. Если у вас есть лишние деньги, лучше поддержать автора-исполнителя и его дальнейшие прожекты непосредственно, прямым переводом на Сбер по телефону +79608223449; моя признательность не будет иметь границ.
На этом моя #tarot#златоключ пока всё.
Just a random update, I got new oracle decks & I'm loving them so much 🥰
🌼 Follow me on Instagram for occasional free daily/weekly/pick a pile reading 😘
🌼 Follow my Shopee shop account to browse and book private readings if you're interested from as low as MYR2.22 - MYR 25.00.
#tarot#oracle#chupdate
@quietworld🍃
An honest feedback from someone living in Australia. Couldn't purchase through Shopee because Shopee isn't available in Australia ☹️, so she asked her Malaysian friend to purchase the reading on behalf of her ❤️
Thank you for the trust ✨🦋
#chupdate#tarot#oracle
@quietworld🍃
All that is needed is your full name, date of birth & one question for the day ☺
Interested?
1️⃣ Click the button below.
2️⃣ Follow The Butterfly🦋
3️⃣ DM the IG for your free daily oracle ❤️✨
#chupdate#tarot#oracle
@quietworld🍃
All that is needed is your full name, date of birth & one question for the day ☺
Interested?
1️⃣ Click the button below.
2️⃣ Follow The Butterfly🦋
3️⃣ DM the IG for your free daily oracle ❤️✨
#chupdate#tarot#oracle
@quietworld🍃