Наверняка вы замечали, что в 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
Результаты 3ей попытки Первенства Локомотив!
4ю попытку необходимо выложить - до 29 мая 23:59 по московскому времени;
Напоминаем вам условия первенства: в зачет идет лучшая попытка.
Условия:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @fedskaterussia
- поставить тег #первенство_локомотив
Скоро мы узнаем финалистов!
Добрый вечер! Мы подготовили результаты 2ой попытки Первенства Локомотив!
3ю попытку необходимо выложить - до 22 мая 23:59 по московскому времени;
Кто забыл условия первенства, то напоминаем вам: в зачет идет лучшая попытка.
Условия:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @id145190006 (@fedskaterussia)
- поставить тег #первенство_локомотив
Результаты 1ой попытки - https://vk.com/wall-150050521_4947
Битва продолжается!
Ну что, друзья, готовы снова зарядить пауэрбэнки и вернуться в скейтпарки за своими лучшими дорожками?
Объявляем онлайн-квалификацию на Первенство ОО «РФСО Локомотив»!
Первенство проходит в дисциплинах «парк» и «улица» среди юношей и девушек до 16 лет включительно (это значит, что на момент самого контеста вам должно быть не более 16 лет).
У вас будет 4 попытки, чтобы показать свой лучший результат!
В каждой попытке от вас требуется:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @fedskaterussia
- поставить тег #первенство_локомотив
Время для съемок и публикации своих видео:
1 попытка - до 8 мая 23:59 по московскому времени;
2 попытка - до 15 мая 23:59 по московскому времени;
3 попытка - до 22 мая 23:59 по московскому времени;
4 попытка - до 29 мая 23:59 по московскому времени.
Отличные новости! 🛴😎
У нас пополнение среди паркеров! Встречайте — Николаенко Данил из солнечного Краснодара!
Данил крутой райдер, чей уникальный стиль и бесстрашие уже успели вдохновить многих.
Мы рады объявить, что теперь Данил будет выступать при поддержке нашей команды и бренда!
Добро пожаловать в команду!
📱dkravets15
#park#TechTeamProхуйня
#НовыйРайдер
A mini picnic in the park. 🧺
Just being here and now is the best plan for the day.
Мини-пикник в парке. 🧺
Просто быть здесь и сейчас — лучший план на день.
#LunaEverly#Picnic#DayMindset#Park#Simplicity
A multidisciplinary team of XISUI Design has created a 3D concrete-printed playground in Shandong Province, China.
Named Boulder Park, a 13,000-square-metre community park in Ji’nan, combines massive boulders - a natural material symbolizing eternity - as the core design element. These boulders complement the park’s experiential and practical offerings.
Stones in the shallow creek can be incorporated into the water play installation, and boulders set over a sandpit can be used as climbing and resting play structures. Additionally, cutting-edge 3D-printed concrete technology is used to build a huge rock cave adventure area.
Images 1-2-3-4-5 📸 Zhou Sheng.
Image 6 📸 Hu Yihao.
#design#playgrounddesign#park#urban#3dprinting#3dprintingconcrete#china
📷 La foto è stata scattata nel Parco centrale intitolato a Maksim Gorkij a Lugansk.
Strutture in legno gialle usate come librerie pubbliche.
" Un viaggio nel lato nascosto del Donbass: quello che costruisce invece di distruggere ".
#Donbass#lugask#europa#estate#ferragosto
#Lugansk#europa#russia#italia#Books#lettura#parchi#park