Наверняка вы замечали, что в 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
👁🗨 Настольная игра «Zero» обязательно понравится:
– Новичкам, потому что у неё лёгкие правила, которые можно объяснить за пару минут, и быстрые партии!
– Любителям компактных карточных игр, ведь в неё можно сыграть практически в любом месте, а ещё она занимает совсем мало места на полочке!
– Фанатам необычных игр на сбор сетов, ведь ваша задача не только собрать особую комбинацию, но и не дать соперникам нужную карточку для их комбинации!
✅ «Zero» ждёт вас на нашем сайте: https://vk.cc/clanyE.
На Ozon: https://vk.cc/claHEq.
На Wildberries: https://vk.cc/claHGY.
#ЗвездаНастольныеИгры#Zero#ЗвездаУжеВПродаже
🅾 Доброе утро, друзья! Понедельник — наше любимое время анонсов. И мы рады сообщить, что игра «Zero» Райнера Книции сегодня поступила в продажу!
🍩 «Zero» — это быстрая карточная игра для небольшой компании до 5 человек, которая является переизданием игры «Zero Down» 2011 года. В ней задача каждого игрока — набрать как можно меньше очков. Каждый раунд игроки получают по 9 карточек на руку, а на стол выкладывается ещё 5. В свой ход можно обменять одну карточку с руки на одну карточку со стола или спасовать. При этом каждый игрок стремится собрать раньше соперников особую комбинацию «Зеро», которая принесёт 0 очков. Если комбинация «Зеро» собрана, раунд немедленно заканчивается, и все игроки, кроме счастливчика с «Зеро», подсчитывают полученные очки. Раунд также заканчивается после второго паса, и тогда подсчёта очков не избежать никому. Партия продлится столько раундов, сколько участников за столом. Победителем станет тот, кто наберёт наименьшее количество очков!
#ЗвездаНастольныеИгры#Zero#ЗвездаУжеВПродаже
🧮📝 Друзья, началась последняя рабочая неделя этого года — время подводить итоги и строить планы на будущее. В самое ближайшее время мы поделимся ими с вами. А пока ловите небольшой анонс уходящего года! Мы издадим на русском языке новую крутую игру от Райнера Книции — «Zero»!
🅾 Это несложная карточная игра, в которую могут сыграть от 2 до 5 человек. Игровой процесс строится на обмене карточек со своей руки с карточками, лежащими на столе. Ваша задача — набрать как можно меньше очков. Игра длится столько раундов, сколько участников в партии. Каждый раунд игроки считают полученные очки, а победитель определяется по итоговой сумме. У кого очков меньше, тот и чемпион!
🌱 «Зеро» уже очень скоро отправится в печать, так что выход игры не за горами! Все подробности обязательно расскажем в следующих публикациях. Следите за нашими новостями! 😉
#ЗвездаНастольныеИгры#Zero#ЗвездаАнонс
ТВЕРЬ 30.05
Семинар ZERO ALCO
SPIRITS AND COCKTAILS при поддержке первых и пока единственный б/а спиритов DRINKSOME
Время: 13:00-15:00
Место: бар FunDuck ( адрес итак все знаете)
Продолжаем встречаться и обсуждать безалкогольную тему и другие закономерные тренды.
Давно не встречались в Твери в таком формате, так что нам есть много о чем поговорить и обсудить!
Попробуем 4 безалкогольных спирита DRINKSOME и коктейли на его основе( если ещё не пробовали), обсудим б/а тему, поделюсь своим и международным опытом и поговорим в формате вопрос-ответ!
Жду вас во вторник (30.05) в баре FunDuck.
Просьба записаться в комментарии к посту - достаточно цифрой указать кол-во человек, кто прийдет на семинар с вами ( если один, то 1) , чтобы мы смогли подготовить бар и всем было видно, слышно и вкусно 🤗.
До скорой встречи!
#безалкогольныеспириты#безалкогольныекоктейли #0%vol #zero