Наверняка вы замечали, что в 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
¿Le buscan tres pies al gato? 🤔
🔴 Además de la vía penal, el #PAN interpuso una denuncia paralela por posibles faltas administrativas graves 📄 | ¿Qué opinas? 🤔
https://revistaelpolitico.com/nacional/pan-denuncia-ebrard-uso-indebido-recursos-publicos/
¡Mejor nadota! ❌
🔴 Parece que el verdadero deseo del #PAN no es ganar gubernaturas, sino ampliar su lista de militantes indeseables 🤡😂🗳️
https://revistaelpolitico.com/nacional/pan-buscara-gustavo-macalpin-sea-candidato-2027/
#COMIDASALUDABLE#PAN🥖 | El sencillo truco de un médico para hacer saludable el pan blanco reduciendo el azúcar y el almidón https://ift.tt/hcf09Z2 November 11, 2024 at 02:00AM
La oposición anda con todo 💥
🔴 El #PAN señaló que las acusaciones de #EU contra Rubén Rocha solo evidencian algo que el oficialismo estaba tratando de ocultar 🤔‼️🚨
https://sinlineamx.com/pan-pide-desaparicion-de-poderes-sinaloa/
¿La dejan sola? 🤔
🔴 Luego de saltar por #MaruCampos y justificarla, el #PAN decidió "aplazar" una conferencia que tenía programada para este día ❌🗓️
https://sinlineamx.com/pan-cancela-conferencia-maru-campos-caso-cia/
¡Nadie los quiere! 🤮
🔴 El #PAN está tan quemado que hasta #SalinasPliego ya los mandó a volar 🤣 | ¿Será que es una ruptura definitiva? 🤔
https://sinlineamx.com/salinas-pliego-desprecia-pan-reclama-mexico-elige/
Dios los hace y ellos se juntan 🙄
🔴 El #PAN estaría dispuesto a reforzar su discurso de que "el pobre es pobre porque quiere" con el rostro de #SalinasPliego❌🤦🏻♂️🗳️
https://sinlineamx.com/panistas-aprueban-salinas-pliego-sea-su-candidato/