Наверняка вы замечали, что в 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
🪐 In the galaxy SDSS J1356+1026, astronomers have witnessed a colossal bubble of gas over 30,000 light-years wide being blown outward from the galaxy’s core. This bubble is powered by fierce winds from a supermassive black hole as it devours material, creating giant outflows that glow in X-ray and optical light—a real-life example of black holes shaping their host galaxies through dramatic, large-scale eruptions. ✨
#blackhole⚡#outflow⚡#phenomena⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
Hyperliquid Faces Major Fund Exodus
🔵 Hyperliquid experienced a massive outflow of approximately $250 million following claims from a researcher about hacks allegedly linked to North Korea. Despite this, Hyperliquid reassured that user funds are secure and no vulnerabilities were found.
Source
#Hyperliquid#Outflow#Hack#NorthKorea#Funds#Security#Crypto#Web3
🚀 XRP Spot ETF Experiences Significant Outflow
According to Odaily, data from SoSoValue indicates that on April 9, Eastern Time, the XRP spot ETF saw a net outflow of $661,200. The 21Shares XRP ETF (TOXR) was the only fund to experience this outflow, contributing to a historical total net outflow of $25.845 million.
As of the time of reporting, the total net asset value of the XRP spot ETF stands at $955 million, with an XRP net asset ratio of 1.15%. The historical cumulative net inflow has reached $1.21 billion.
#XRP#SpotETF#Outflow#Cryptocurrency#21Shares#TOXR#NetAssetValue#CryptoNews
🚀 XRP Spot ETFs See Significant Inflows and Outflows
XRP spot ETFs experienced notable financial movements last week, with a net inflow of $11.75 million, according to Odaily. The data, sourced from SoSoValue, covers the trading days from April 6 to April 10 (Eastern Time).
The Bitwise ETF XRP led the inflows, attracting $9.5154 million, bringing its historical total net inflow to $388 million. Following this, the Franklin ETF XRPZ saw a weekly net inflow of $2.8987 million, with its historical total reaching $324 million.
Conversely, the 21Shares ETF TOXR recorded the highest net outflow, amounting to $661,200, with its historical total net outflow standing at $25.85 million.
As of the latest update, the total net asset value of XRP spot ETFs is $968 million, with an ETF net asset ratio of 1.16% compared to XRP's total market capitalization. The cumulative historical net inflow has reached $1.22 billion.
#XRP#ETFs#Crypto#Inflow#Outflow#Bitwise#Franklin#21Shares#NetAssetValue#MarketCap