Что делать если нужно поставить какую-то Python-библиотеку а root-прав нет? То есть в систему библиотеку никак и ничего не поставить.
Есть как минимум два способа это решить правильно!
🔸 Сделать виртуальное окружение и ставить там что угодно.
Это позволит создать полностью независимое исполняемое окружение для ваших приложений.
Все библиотеки будут храниться в домашней директории юзера а значит доступ на запись имеется.
Создать очень просто:
python3 -m venv ~/venvs/myenvname
Теперь активируем окружение
# Linux
source ~/venvs/myenvname/bin/activate
# Windows
%userprofile%\venvs\myenvname\Scripts\activate.bat
Можно ставить любые библиотеки и запускать приложение.
Это стандартный метод работы с любым проектом. Если еще не используете его, то пора начинать. Даже при наличии root доступа!
🔸 Бывает, что нет возможности запустить приложение из своего виртуального окружения. Например, его запускает какой-то сервис от вашего юзера и вставить активацию окружения вы не можете.
В этом случае можно установить библиотеки для Python не глобально в систему, а только для юзера.
Выполните этот код в консоли:
python3 -m site
Вы получите что-то такое:
sys.path = [
'/home/user',
'/usr/lib/python37.zip',
'/usr/lib/python3.7',
'/usr/lib/python3.7/lib-dynload',
'/home/user/.local/lib/python3.7/site-packages',
...
]
USER_BASE: '/home/user/.local'
USER_SITE: '/home/user/.local/lib/python3.7/site-packages'
ENABLE_USER_SITE: True
Нас интересует параметр USER_SITE. Это путь к пользовательским библиотекам, которые доступны по умолчанию, если они есть.
Именно сюда будут устанавливаться модули если добавить флаг --user при установке чего-либо через pip
pip install --user requests
Для этой команды не нужны root-права.
После неё можно запускать системный интерпретатор без виртуальных окружений и установленная библиотека будет доступна для текущего юзера.
Параметр USER_BASE показывает корневую директорию для хранения user-библиотек. Её можно изменить с помощью переменной окружения PYTHONUSERBASE
export PYTHONUSERBASE=~/pylibs
python3 -m site
...
USER_BASE: '/home/user/pylibs'
USER_SITE: '/home/user/pylibs/lib/python3.7/site-packages'
Получается некоторое подобие виртуального окружения для бедных 😁 которое можно менять через эту переменную (не делайте так!Лучше venv!)
🔸 Дописывание пути в PYTHONPATH
Этот способ не входит в список "двух правильных", но тоже рабочий. Здесь придётся сделать всё несколько сложней.
Сначала ставим библиотеку в любое место указывая путь установки
pip3 install -t ~/mylibs modulename
Библиотека установится без привязки к какому-либо интерпретатору. То есть по умолчанию не будет видна. Теперь в нужный момент добавляем этот путь в sys.path или в PYTHONPATH.
Не буду советовать так делать. Единственный раз когда этот способ мне пригодился и решил поставленную задачу, это при создании общей библиотеки для кластера компьютеров.
Модули лежат в сети и подгружаются для всех из одного и того же места. То есть обновлять файлы требуется только один раз а не на всех хосты отдельно.
Минусы такого подхода:
▫️Нужно всем хостам пробить нужный путь в .bashrc или ещё куда-то чтобы он сетапился на старте.
▫️Чем больше хостов тем больше нагрузка на сеть. Иногда такой способ не подходит именно по этой причине. Тогда Ansible вам в помощь.
▫️Не очень подходит если хосты с разными операционками. Некоторые библиотеки различаются для Linux и Windows (там, где есть бинарники) и приходится мудрить более сложные схемы.
#tricks#basic
Potato Waffle Burger 🍔🥔
Ingredients:
- 6 potatoes 🥔
- 70g all-purpose flour 🌾
- 100 ml plant drink 🥛
- 1 tsp salt 🧂
Toppings:
- 2 spreads of vegan cream cheese 🧀
- 1 handful of lamb's lettuce 🥬
- 5 mushrooms 🍄
- Fried onions, chili 🌶
- Agave mustard dressing 🍯
Dressing:
- 2 tbsp mustard
- 3 tbsp agave syrup 🍯
- 1 tbsp oil 🫒
- 1 tbsp water 💧
- Pinch of salt, pepper 🧂
Preparation:
1. Grate the potatoes, squeeze out the liquid, and mix with all ingredients for the dough. 👩🍳🥔
2. Fry the mushrooms and season them. Mix the ingredients for the agave mustard dressing. 🍄
3. Pour the batter into the waffle iron. 🧇
4. Enjoy with the toppings! 😋
#PotatoWaffleBurger#VeganBurger#PlantBased#HealthyEats#EasyRecipes
@dishes
Potato Waffle Burger 🍔🥔
Ingredients:
- 6 potatoes 🥔
- 70g all-purpose flour 🌾
- 100 ml plant drink 🥛
- 1 tsp salt 🧂
Toppings:
- 2 spreads of vegan cream cheese 🧀
- 1 handful of lamb's lettuce 🥬
- 5 mushrooms 🍄
- Fried onions, chili 🌶️
- Agave mustard dressing 🍯
Dressing:
- 2 tbsp mustard
- 3 tbsp agave syrup 🍯
- 1 tbsp oil 🫒
- 1 tbsp water 💧
- Pinch of salt, pepper 🧂
Preparation:
1. Grate the potatoes, squeeze out the liquid, and mix with all ingredients for the dough. 👩🍳🥔
2. Fry the mushrooms and season them. Mix the ingredients for the agave mustard dressing. 🍄
3. Pour the batter into the waffle iron. 🧇
4. Enjoy with the toppings! 😋
#PotatoWaffleBurger#VeganBurger#PlantBased#HealthyEats#EasyRecipes
@dishes
Fillo Quiche Cups Recipe🥚🥓🧈
Perfect for brunch or appetizers!
Ingredients:
Fillo Dough Shells:
📜 250g Fillo pastry sheets
🧈 50g butter, melted
Filling:
🥓 200g Pancetta or bacon, diced
🥚 10 Large eggs
🌿 50g Fresh chives, chopped
🧂 Salt/Pepper to taste
🧀 150g Swiss & Gruyere cheese
🧀 150g Fresh Mozzarella cheese, sliced
⚪️ Sesame seeds
Instructions:
1️⃣ Preheat oven to 190°C (375°F).
2️⃣ Cut fillo sheets into squares, brush each layer with melted butter, and stack them in a muffin tin.
3️⃣ In a bowl, whisk eggs 🥚, add pancetta 🥓, chives 🌿, and cheese 🧀. Season with salt and pepper 🧂.
4️⃣ Pour mixture into fillo shells, top with mozzarella slices, and sprinkle sesame seeds ⚪️.
5️⃣ Bake for 15–20 minutes or until golden brown ✨.
#EasyRecipes#BrunchGoals#MiniQuiches#CheeseLovers🥧
@dishes
Roasted Zucchini Pepper Pasta🍝🥒🌶️
Ingredients:
🥒 1 zucchini, grated
🌶️ 1 bell pepper
🧅 3 shallots
🧀 100 g cream cheese
🍁 40 ml maple syrup
🧂 1 tsp salt
🫒 Oil as desired
🌿 1 handful of parsley, chopped
🍝 250 g pasta
Preparation:
1️⃣ Put zucchini, bell pepper, and onions in a casserole dish 🥘.
2️⃣ Add cream cheese 🧀, oil 🫒, maple syrup 🍁, and salt 🧂.
3️⃣ Roast everything in the oven for 35 minutes (top/bottom heat) 🔥.
4️⃣ Cook the pasta 🍝.
5️⃣ Mix the roasted vegetables, pasta, and parsley 🌿. Enjoy! 😋
#EasyRecipes#VegetarianPasta#RoastedVeggies#ZucchiniLovers#QuickMeals#ComfortFood
@dishes
Creamy Tuscan Chicken🍗🍅🌿
Ingredients:
- 2 lb chicken breast 🍗
- Salt and pepper to taste 🧂
- 3 tablespoons flour 🌾
- 1 tbsp smoked paprika 🌶️
- 2 tablespoons butter 🧈
- 2 tablespoons olive oil 🫒
- 3 garlic cloves 🧄
- 2 shallots 🧅
- 1 sprig of cherry tomatoes 🍅
- 1/4 cup sundried tomatoes 🍅
- 1/4 cup parmesan cheese 🧀
- 1 teaspoon Italian oregano 🌿
- 1 cup chicken broth 🍲
- 1/2 cup white wine 🍷
- 2 cups heavy/whipped cream 🥛
- 2 cups fresh baby spinach 🥬
Steps:
1. Season chicken with salt, pepper, and smoked paprika. Coat with flour.
2. Heat butter and olive oil in a pan. Sear chicken until golden. Remove and set aside.
3. Sauté garlic, shallots, and cherry tomatoes in the same pan. Add sundried tomatoes.
4. Pour in white wine and chicken broth. Simmer and reduce.
5. Stir in heavy cream, parmesan, and oregano. Cook until thickened.
6. Add baby spinach. Return chicken to the pan and simmer until cooked through.
Serve hot and enjoy! 🍴✨
#CreamyTuscanChicken#ChickenDinner#ComfortFood#TuscanFlavors#EasyRecipes#FoodLover
@dishes