Наверняка вы замечали, что в 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
02. Iyengar Yoga
去了 5 次瑜伽课,几乎都是早上 7 点打车去古城,Iyengar Yoga 对于我这种柔韧性很差的人真的折磨,感觉是该回炉重造了,其实一开始只是想陪着学姐去,但是似乎也坚持下来了,老师说进步很明显,甚至能倒立了,这周应该还会完成一个 4-5 节课的 Session。
有趣的是老师为了让我放松在跟我闲聊:
“You have a very healthy body but apparently lack of exercise, how old are you? 22?”
“27 and I’m a programmer”
“Oh that make sense, you actually need yoga!!!”
其实随着年龄渐长自己已经不得不正视身体和精力已经有些跟不上自己的想法了,早起去瑜伽或是锻炼几个小时,下午回来后常常感觉到疲劳,学习能力和专注力也不如之前了。
有尝试过进行一些调整,如又重新恢复的 8+16 断食和坚持了差不多一个月素食(不算非常严格,跟朋友聚餐也会破戒但大体坚持下来了),再加上现在的瑜伽和游泳,有点像是人力抵抗自然,痛苦但有用。
#life#chiangmai