Наверняка вы замечали, что в 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
⚡ Компания Lightning Labs представила инструменты LangChainBitcoin, которые позволят ИИ-разработчикам интегрировать биткоин-платежи в свои решения.
«Инструменты построены на протоколе L402, собственном механизме аутентификации Lightning Network, и Langchain, популярной библиотеке для упрощения работы с агентами ИИ», — говорится в описании.
LangChainBitcoin позволяет непосредственно взаимодействовать с биткоином, хранить баланс, отправлять и получать криптовалюту через сеть микроплатежей, а также напрямую управлять нодой LND, подчеркнули разработчики Lightning Labs.
#AI#Lightning
🌎 Lightning can sculpt glassy roots in sand! When a lightning bolt strikes the beach, it melts the grains into branching tubes called fulgurites—nature’s underground lightning “fossils.” ✨
#lightning⚡#geology⚡#minerals
👉subscribe Interesting Planet
OpenRGB
Open source #RGB#lightning control
If you have RGB devices from many different manufacturers, you will likely have many different programs installed to control all of your devices. These programs do not sync with each other, and they all compete for your system resources. OpenRGB aims to replace every single piece of proprietary RGB software with one lightweight app.
https://openrgb.org
#ChatGPT easily writes the code of a reverse proxy that allows you to open the API gate for payments #Bitcoin#Lightning and just as easily translates this code into the popular Rust programming language
Simply put, machines are capable of making transactions with other machines 😈
🌎 A bolt from the past—fossilized lightning! When a lightning strike fuses sandy soil, it creates glassy, branching tubes called fulgurites, preserving the path of electricity underground for thousands of years. ✨
#geology⚡#lightning⚡#fossils
👉subscribe Interesting Planet
🌍 A single lightning bolt can be five times hotter than the surface of the Sun. These powerful flashes quickly heat the air, causing the thunderous sound we hear soon after. ✨
#weather⚡#lightning⚡#atmosphere⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍