Наверняка вы замечали, что в 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 1843, Scottish inventor Alexander Bain patented the first electric clock. His design used electromagnetic pendulums powered by batteries, revolutionizing timekeeping accuracy for railways and industry. By 1845, electric clocks began synchronizing city tower clocks in England. ✨
#invention⚡#history⚡#technology
👉subscribe Interesting Planet
👉more Channels
🌎 The accidental invention of Velcro came after Swiss engineer George de Mestral examined burrs stuck to his dog in 1941. He found their hooks could inspire a new fastening system. Velcro's tiny hooks and loops mimic burrs’ natural grip, and it is now widely used in clothing, space suits, and shoes. ✨
#invention⚡#history⚡#engineering
👉subscribe Interesting Planet
👉more Channels
🌎 X-rays, discovered by Wilhelm Röntgen in 1895, revealed the hidden structure of the human body without surgery. The first X-ray image was of Röntgen’s wife’s hand, showing her bones and wedding ring. ✨
#history⚡#invention⚡#medicine
👉subscribe Interesting Planet
🌎 The first practical electric light bulb was invented by Thomas Edison in 1879. Edison’s design used a carbon filament inside a vacuum bulb, which could glow for over 1,200 hours before burning out. ✨
#invention⚡#history⚡#electricity
👉subscribe Interesting Planet
👉more Channels
🌎 A single spark started the Age of Electricity—when Michael Faraday discovered electromagnetic induction in 1831. This breakthrough showed how moving magnets can create electric current, laying the groundwork for generators, motors, and our modern electric world. ✨
#invention⚡#history⚡#electricity
👉subscribe Interesting Planet
🌎 Before the invention of the printing press, books had to be copied by hand, a process taking months or even years per copy. In 1440, Johannes Gutenberg developed the first movable type printing press in Germany, revolutionizing the spread of knowledge. The first major book he printed was the Gutenberg Bible, completed around 1455 and containing 1,282 pages. ✨
#printing⚡#history⚡#invention
👉subscribe Interesting Planet
👉more Channels
🌎 The printing press, invented by Johannes Gutenberg around 1440, revolutionized how information spread. Movable metal type allowed fast, affordable book production—leading to the first mass communication and fueling the European Renaissance. ✨
#invention⚡#history⚡#printing
👉subscribe Interesting Planet
First motorcycle ride — Nov 10, 1885: German engineer Gottlieb Daimler tested a two-wheeled, engine-powered vehicle, marking the birth of the motorcycle.
🏍️⚙️
[Read more]
@googlefactss
#history#transport#invention#nowyouknow
🌎 The accidental discovery of Teflon happened in 1938 when chemist Roy Plunkett was trying to make refrigerants. Instead, he found a slippery, nonreactive solid—polytetrafluoroethylene, now used for nonstick cookware and medical devices. The first Teflon-coated pan was produced in France in 1954. ✨
#invention⚡#chemistry⚡#materials
👉subscribe Interesting Planet
👉more Channels
Bubble Wrap was invented in 1957 by two engineers trying to make textured wallpaper. It didn’t work as wallpaper but became popular as packaging material. 🎈📦@googlefactss#BubbleWrap#Invention#Packaging
🌎 The MRI (Magnetic Resonance Imaging) machine was invented in the 1970s by Raymond Damadian, Paul Lauterbur, and Peter Mansfield. MRI uses strong magnets and radio waves to produce detailed images of organs and tissues inside the body, without using X-rays. The first full-body MRI scan was completed in 1977. ✨
#invention⚡#medicine⚡#imaging
👉subscribe Interesting Planet
👉more Channels
Fredric Baur invented the Pringles can. He died on May 4, 2008, at age 89. At his request, some of his ashes were buried in an Original flavor Pringles container. 🫙❤️
[Source]
@googlefactss
#Pringles#Invention#FunFact#FredricBaur
If you have ideas or feedback contact us:
@Googlefactss_Feedback_bot