Наверняка вы замечали, что в 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
📦 Модульный корпус Raspberry Pi 2B/3B/3B+/4 c OLED-дисплеем и кулером
Модульная конструкция позволяет быстро собрать корпус для популярных моделей Raspberry Pi, добавив дисплей и вентилятор по желанию. Удобство сборки и стильный дизайн порадуют любителей DIY-проектов!
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Мы в Max | Заказать печать
💻 Программируемый термометр с RGB-подсветкой
Термометр отображает температуру окружающего воздуха, используя яркий RGB-экран. Настраиваемый дизайн корпуса позволяет персонализировать устройство. Идеален для дома или офиса.
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🔧 Держатель провода для пайки
Удобный держатель для фиксации провода во время пайки. Компактный дизайн позволяет комфортно разместить инструмент рядом с рабочим местом. Получается добиться соосности двух проводов и получить идеальную спайку
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🧱 Держатель аккумуляторов 2S / 3S / 4S 18650
Универсальная конструкция позволяет надежно фиксировать от 2 до 4 аккумуляторов формата 18650, обеспечивая удобство сборки батарейных блоков. Отличный выбор для любителей DIY-проектов!
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🖱️ Кожух и кнопки мыши Logitech MX Master 3 Full Fuzzy Skin
Эта уникальная 3D-доработка позволяет создать стильную модификацию любимой мышки от Logitech — теперь её корпус станет необычным!
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Мы в Max | Заказать печать
День 77
Apple — IPhone 17 Pro (2025)
Этот ролик вышел только вчера, но как же он хорош!
Apple в очередной раз показывают, как нужно рассказывать о фишках своего продукта.
Телефон. Все время в центре внимания.
Магия. Мы видим то, что обычно остается за кадром на съемках (профессионального?) кино.
Эмоции. И снова наша любимая «экстремальная честность». Да, съемки — это не всегда чилл у плейбека.
Да и как снято! Красота же, ну!
Скажите честно: захотелось?
#electronics
📦 Корпус ESP32-CAM
Защищённый корпус для камеры ESP32-CAM — удобный монтаж, аккуратный внешний вид, лёгкость сборки!
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Max
🧲 Разделитель батарей формата 18650 | Восьмиугольный (от 8 до 28 элементов)
Размещайте аккумуляторы аккуратно и эффективно! Пространственная решётка упрощает сборку и повышает надёжность конструкций.
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Max
🧰 Универсальный держатель кабеля — V2
Универсальное решение для аккуратной укладки кабелей и проводов любых типов. Подходит для дома, офиса или мастерской, обеспечивает порядок и удобство пользования устройствами.
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | Max
💾 Защитная крышечка USB-C
Защищает порт от пыли и грязи — идеальный аксессуар для сохранности устройства!
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели | 3D Маркетплейс | Max
📦 Коробочка ESP32-WROOM-32 с USB-C и крышкой
Простое решение для аккуратной установки модулей ESP32 — компактная коробочка с удобной крышкой и портом USB-C для подключения питания и программирования.
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
🖨3D модели для печати | 3D Маркетплейс | Max
💡 Корпус FlashForge AD5X
Оригинальный корпус, разработанный специально для повышения удобства работы с принтером FlashForge AD5X. Идеально подходит для защиты от пыли и посторонних глаз.
Кстати он все еще продается по сниженной цене тут, забирай пока цену опять не задрали 👉Aliexpress
🔗Скачать:Printables
#️⃣ Категория:#Electronics@anzar3d
Реклама. ООО "АЛИБАБА.КОМ (РУ)", ИНН 7703380158
🖨3D модели для печати | 3D Маркетплейс | Max