Наверняка вы замечали, что в 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
"Down with the men, with the swords
down with the sleepy fellows—
hundreds from under a wing
dozens from a feather tip!"
— The #Kalevala: 43: 227 — 230
(Bosley translation)
Art: Joseph Alanen🇫🇮 — The defense of the Sampo (1910 – 1912)
The text underneath the painting in a runic style font is verse 227 in Finnish.
ДЕНЬ "КАЛЕВАЛЫ": ИСТОРИЯ
28 февраля 1835 года финский врач и фольклорист Элиас Леннрот, подписав инициалами "E.L." предисловие к эпосу "Калевала", передал рукопись в типографию. Этот день войдет в историю как День "Калевалы".
Первый раз День «Калевалы» отметили в 1865 году в связи с 30-летием выпуска первого издания эпоса. Финляндия на тот момент входила в состав Российской Империи в качестве Великого княжества Финляндского, а значит можно считать, что День «Калевалы» был общим праздником. «Калевалу» знали и изучали и в Суоми и в России.
Столетие первого издания эпоса в 1935 году Финляндия уже встречала самостоятельным государством. Основой и фундаментом финского национального сознания был именно эпос «Калевала». В Российской Карелии также событие не осталось незамеченным, но более того – объединило научные силы исследователей по обе стороны границы. Однако, военные конфликты ХХ в. надолго прекратили эту совместную работу.
В конце 1930-х-начале 1940-х годов, когда прошла Зимняя война, а затем и война-продолжение было, конечно, не до широких праздников. Однако, тема "Калевалы" витала не только в научных кругах, а все больше использовалась для пропаганды и уже не сходила с передовиц газет и журналов, теснясь рядом с боевыми сводками.
К Дню "Калевалы" 1943 года стало ясно, что Германия не выиграет войну и что мирные условия могут быть жесткими для Финляндии. Газеты сменили риторику и в отношении "Калевалы", и в отношении политических взглядов на национальные вопросы.
В Советском союзе в послевоенные годы юбилейные Дни "Калевалы" проходили с большим размахом. В 1948 году, в год 99-летия полного издания поэмы Элиаса Леннрота, был объявлен всесоюзный конкурс художников на создание иллюстраций к эпосу. Власти готовились к вековому юбилею первого полного издания эпоса.
В 1949 году уже 9 января вышло «Постановление Политбюро ЦК ВКП(б) о мероприятиях по проведению 100-летия со времени издания карело-финского эпоса «Калевала»». В рамках празднования проходили концерты с выступлением сказителей и рунопевцев, которые не только заучивали руны из леннротовской "Калевалы", но и сами писали руны нового времени: про Антикайнена и Сталина, про советские стройки и жизнь в колхозах, а также хвалебные песни в честь коммунистического правительства. Власть такие песни, конечно, любила и щедро одаривала грамотами и титулами. Малограмотные колхозники-кантелисты и исполнители народных рун становились членами Союза писателей, при этом писать литературные произведения и тем более издаваться было совсем не обязательно.
В 1970-80 гг. праздники с фокусом на калевальскую поэтику проходили в рунопевческих деревнях не только в конце февраля, но и в летние месяцы. Деревни очень долго хранили традиции предков, отмечая праздники с христианским и языческим подтекстом: Иванов день, Петров день… В Советском союзе у властей была другая идеология, поэтому дедовские праздники легко маскировались в праздники с фольклорным уклоном, с выступлением местной самодеятельности.
Уже многие годы День "Калевалы" отмечается и в Финляндии, и в России: проходят научные конференции, детские музейные праздники, конкурсы чтецов и иллюстраторов эпической поэмы и другое. «Калевала» все ещё интересует современное сообщество, объединяя людей для совместной исследовательской работы и творческого переосмысления общего наследия.
Текст и фото: Татьяна Бердашева
#berdasheva#kalevala#historia#karelia#28февраля