Что делать если нужно поставить какую-то 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
HANNAH MONTANA timeeeeee🌸
Ностальгируем по сериалам с SODA👀
Ловим вдохновение от культового сериала Disney и делаем потрясающие макияжи!
Небольшая подборка продуктов для ваших задумок🫶
1.Блеск для губ CHU ME A FAVOUR #bittersweetkiss, № 205 Miss you
2.Хайлайтер MAGELLANIC CLOUD
3.Палетка теней Heart Of Alfea #magicalpower. Коллекция Winx
4.Тушь для ресниц Ones And Zeros #magicalpower. Коллекция Winx, 003 Code
В комментариях пишите какой сериал сделать следующим!
🙏
#sodainspiration
❄️Выпал первый снег, а это значит, что настало время зимнего мэйкапа!
❄️Зимний образ с помощью:
• палетки Beware Of Witches #magicalpower
• подводки кремовой Miraculous #miraculouseyes
• пигмент-подводки жидкой Inner Dragon #magicalpower
• тинта Sunfire 003 (Winx)
• блеска для губ CHU ME A FAVOUR #bittersweetkiss, 202 Kdrama
Уже готовы к зимнему сезону?
☕️
🎄
🤩Современный японский макияж — это про естественность, ухоженность и внимание к деталям.🤩
Большое значение здесь уделяется подготовке кожи: тщательное очищение, увлажнение и лёгкие уходовые текстуры создают ровную, живую основу.
🤩Именно поэтому в макияже почти не используют плотный тон и резкий контуринг — кожа уже выглядит свежей и сбалансированной.
Макияж остаётся аккуратным и лёгким: мягкие румяна освежают лицо, глаза подчёркнуты деликатно — тонкой линией, нюдовыми оттенками, разделёнными ресницами. Губы — полупрозрачные, увлажнённые, без чёткого контура.
В итоге образ выглядит спокойным и чистым. 🤩
Попробуй повторить японский макияж с Soda🎀
Тональная основа LIGHTWEIGHT FOUNDATION #covergirl
SODA Chan Тушь для ресниц Genius Look
Блеск для губ CHU ME A FAVOUR #bittersweetkiss
Кремовые румяна NEVER SHY AWAY #cuteadventure 002 «BE BRAVE»
#sodainspiration
# БЛЕСК ДЛЯ ГУБ💋
Мало кто знает, что блеск для губ появился благодаря... кинематографу! В начале 1930-х годов визажист Макс Фактор искал способ сделать губы актрис более выразительными на чёрно-белой плёнке.❤️ Румяна и помада снимались тускло, а вот глянцевое сияние сразу притягивало взгляд зрителя. Так в 1932 году на свет появился первый блеск для губ — и мгновенно стал частью культового голливудского 📸 макияжа.
Со временем блеск шагнул за пределы киностудий, и его полюбили все — от тинейджеров до звезд. Сначала он был исключительно прозрачным, но с годами палитра расширилась до самых неожиданных оттенков и текстур: с шиммером, с витамином E, с блёстками и даже с ароматами!
Сегодня блеск для губ — это не просто средство для макияжа, а символ стиля, свободы и экспериментов. Достаточно одного штриха — и вы уже в центре внимания! 🐱
А вы помните свой первый блеск? Какой он был?
Попробуй блески от SODA и сияй каждый день ⭐️
• GLITTER LIPGLOSS #wegotyoubabe 101
• CHU ME A FAVOUR #bittersweetkiss 203 "love triangle"
• Down To Business #softdivalution
#sodalovespopculture
А вот и 2013! 🐈
Эра Instagram-бровей, идеального тона и нюдовой глянцевой помады официально вернулась. В центре внимания — выверенная симметрия, подсвеченное лицо и ультрачёткий макияж глаз. Это был год, когда каждый бьюти-лук сопровождался хэштегом #MOTD.
💎Что тебе нужно для образа в духе 2013?
✅Палетка теней #mangaeyes STYLISH — для мягкой растушёвки в коричнево-бежевой гамме и капельки блеска в уголках
✅Кремовые румяна в стикe #rosycheeks 103 Perfect Peach — натуральный румянец без перегруза
✅Блеск для губ CHU ME A FAVOUR #bittersweetkiss, № 203 Love triangle — сияние, будто ты только что вышла из глянцевой обложки
✅Стойкий карандаш для глаз Never Let Go #eyeminlove, № 001 Agust D — чтобы нарисовать фирменные стрелки с "хвостиком вверх"
✅Карандаш для бровей Flat Brow Liner — потому что в 2013 брови были королевами
✅Накладные ресницы с кристалликами — кукольный объём, как у всех тогдашних beauty-гуру
✅Жидкие тени для век Supernova #softdivalution, 001 "spotlight"— сияние, которое видно из космоса
🌸Добавь немного контуринга и эффект «загара с YouTube», и ты готова к новому дню… или селфи в Instagram с фильтром Valencia.
В комментах выбираем следующий год 😍
#sodainspiration