Наверняка вы замечали, что в 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
High Protein Wan Tan
Ingredients:
For the dough:
- 250 g flour 🌾
- 1 tsp salt 🧂
- 100 ml warm water 💧
For the filling:
- 1 cm ginger 🫚
- 100 g soy granules 🌱
- 2 spring onions 🧅
- 2 cloves of garlic 🧄
- 3 mushrooms 🍄
- 1 carrot 🥕
- 4 tbsp soy sauce 🧴
- 1 tbsp starch 🌿
Additionally:
- oil for frying 🛢️
- 100 ml water for steaming 💦
#HighProtein#WanTan#HealthyEating#Vegan
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶️
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
High Protein Zucchini Frittata 🥒🍅
Ingredients:
• 450 g chickpea flour 🌱
• 800 ml water 💧
• 1 zucchini 🥒
• 10 cherry tomatoes 🍅
• 2 onions 🧅
• 1 tsp turmeric 🌞
• 1 tsp Kala Namak 🧂
• 1 tsp paprika powder 🌶️
• Pinch of salt & pepper 🧂
Toppings:
• Cherry tomatoes 🍅
• Onion rings 🧅
• Italian herbs 🌿
Preparation:
1️⃣ Mix chickpea flour with water and season 🌱
2️⃣ Add vegetables and let rest for 10 minutes ⏳
3️⃣ Heat some oil in a pan and add the mixture; decorate with toppings 🥄
4️⃣ Cover and cook on low heat for 20 minutes 🔥⏳
#FrittataTime#HighProtein#ZucchiniRecipe#VeganDelight#HealthyEating#PlantBasedCooking
@dishes
High Protein Sweet & Sour Udon Noodles 🍜💪
Ingredients:
- 250 g udon noodles 🍜
- 80 g pea or soy medallions 🌱 (vegetable broth)
- 2 carrots 🥕
- 100 g sugar snap peas 🍃
- 200 g mushrooms 🍄
- 1/2 bunch of spring onions 🧅
Sauce:
- 2 tbsp sesame oil 🌾
- 1 tbsp soy sauce 🧂
- 3 tbsp agave syrup 🍯
- 2 tbsp rice vinegar 🍚
- 50 ml pasta water (from the udon noodles) 💧
- 1 tsp sesame seeds 🌿
- 1 tsp chili flakes 🌶️
Instructions:
1. Cook udon noodles in boiling water as per instructions. Save 50 ml of pasta water. 🍲
2. In vegetable broth, cook soy or pea medallions until tender. 🥄
3. Slice carrots, sugar snap peas, mushrooms, and spring onions. 🍄🥕🍃
4. Heat sesame oil in a pan, add veggies, and stir-fry until tender-crisp. 🍳
5. Add soy sauce, agave, rice vinegar, pasta water, sesame seeds, and chili flakes to the pan. 🍶
6. Combine everything, serve, and enjoy! 😋
#SweetAndSourNoodles#HighProtein#PlantBased#UdonLove#HealthyEats#VeganNoodles#QuickMeals#FoodieFun
@dishes
High Protein Red Cabbage Rolls
Ingredients:
🥬 1 large red cabbage
🫚 4 cm ginger
🧄 3 cloves of garlic
🥕 2 carrots
🫑 2 peppers
🧅 2 spring onions
🌱 100 g soy granules
🍶 50 ml soy sauce
Toppings:
✨ Sesame, 🌿 fresh parsley, 🌶 chili flakes
Dip:
🍯 Sweet Chili Sauce
#HighProtein#RedCabbageRolls#HealthyEating#PlantBased#EasyRecipe#SoyGranules#VeggiePower#Flavorful#MealPrep
@dishes