Наверняка вы замечали, что в 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
¡Ya van 3! 🚨
🔴 La Fiscalía de #Sinaloa informó que Dámaso Castro solicitó separarse de su cargo sin goce de sueldo en medio de las denuncias de #EU📄☝🏻🇺🇸
https://revistaelpolitico.com/nacional/vicefiscal-de-sinaloa-pide-licencia-separarse-de-cargo/
Importante 🚨
🔴#RubénRocha dejó de tener fuero luego de que solicitó la licencia temporal como gobernador de #Sinaloa👀📂
https://sinlineamx.com/fgr-senala-ruben-rocha-ya-puede-ser-citado-declarar/
🚨 ¡ÚLTIMA HORA! 🚨
‼️El Departamento de Justicia por fin revela las pruebas definitivas contra Rocha Moya y Morena.
Inteligencia de altísimo nivel, sellada por la CIA y firmada por el agente infiltrado "Donaldo Trumpetas".
Evidencia 100% real, no fake. 🌮🔍😅
#Sinaloa#RochaMoya
¡Golpe al narcotráfico! 🥊
🔴 La #FGR logró la destrucción de diversas sustancias químicas utilizadas en la elaboración de drogas sintéticas en #Sinaloa💥🪖‼️
https://revistaelpolitico.com/estados/marina-neutraliza-narcolaboratorio-los-chapitos-sinaloa/
¡Y no se lo mandó a decir! 💣💥
🔴 Andrés López Beltrán respondió con TODO a #Loret tras relacionarlo con una presunta red de financiamiento en #Sinaloa🤯💰💸
https://sinlineamx.com/andres-lopez-beltran-loret-relacionarlo-rocha/
Ya andan copiando el discurso del PAN 🙄
🔴 El #PRI señaló que se debe contemplar la desaparición de poderes en #Sinaloa tras las acusaciones en contra de #RubénRocha🥱‼️👇🏻
https://revistaelpolitico.com/nacional/pri-exige-estricta-aplicacion-ley-caso-ruben-rocha/
La oposición sigue atacando 🙄
🔴#JorgeRomero señaló que el hecho de que #RubénRocha haya pedido licencia no resuelve el problema violencia en #Sinaloa⚠️🚨💥
https://sinlineamx.com/pan-insiste-desaparicion-de-poderes-en-sinaloa/
Ojo ahí 👀
🔴#EU presentó evidencia de los supuestos "sobornos" de #LosChapitos a mandos policiales y a la fiscalía de #Sinaloa🇺🇸🚨‼️
https://sinlineamx.com/revelan-unica-prueba-de-eu-contra-ruben-rocha/
¡Atención! 🤚🏻🚨
🔴#YeraldineBonilla se convirtió en la primera gobernadora interina de #Sinaloa👩🏻 | Esto dijo sobre las acusaciones a #RubénRocha📹👇🏻
https://revistaelpolitico.com/estados/quien-es-yeraldine-bonilla-gobernadora-interina-sinaloa/
Las arañas del género Lyssomanes (familia Salticidae) poseen una característica coloración verde translúcido, lo que permite ver en ciertos momentos los conos oculares en movimiento. Son arañas inofensivas #NIM✔️
#Mazatlán#Sinaloa#CityNatureChallenge
@Pacos_ReservaMxhttps://t.co/yodylzBBkZ
https://twitter.com/Arachno_Cosas/status/1121529246709534721