Что делать если нужно поставить какую-то 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
💥Pelota de Voleibol Wilson AVP Soft Play
Diviértete en familia con un juego emocionante
✅OFERTA: 13.97€
❌ Antes: 19.95€
💰Ahorras un 30%🔥
Diseño suave para mayor comodidad y diversión sin límites
👉 Agrega diversión a tus reuniones navideñas
#wilson#pelotavoleibol#avpsoftplay#deporte#navidad#ofertas#viral
🛰️Oferta publicada en Deporte y Outdoor
Wilson возвращает легендарную ракетку 2007 года! 🎾✨
Перезапуск той самой модели, с которой Роджер Федерер доминировал на кортах. Волна ностальгии по стильным нулевым накрывает с головой.
Цена вопроса — $375.
Готовы к ретро-мощи в современных реалиях?
#Wilson#Федерер#Tennis#НулевыеВернулись#ЛегендаНаКорте
🎾 Всем привет! Сегодня поговорим о том, без чего не обходится ни одна тренировка или матч — о теннисных мячах. Выбор правильного мяча может значительно повлиять на вашу игру, поэтому мы собрали топ-3 вида мячей, которые рекомендуют профессиональные тренеры. Эти мячи отличаются долговечностью, качеством и подходят для разных покрытий. Давайте разберемся, какие из них заслуживают вашего внимания! 🎾
1. Wilson All Court
- Для любых покрытий: Эти мячи идеально подходят для всех типов кортов, будь то грунт, трава или хард.
- Износостойкость: Сердцевина из натурального каучука обеспечивает прочность и высокую упругость.
- Влагоустойчивость: Обработанный войлок отталкивает воду и грязь, что позволяет играть даже на влажных кортах.
- Одобрено: ITF, USTA, FIT.
- Особенность: Мячи Wilson стали официальным партнером Roland Garros и теннисной федерации Франции (FFT).
2. Slazenger
- История качества: Бренд Slazenger известен с 1881 года, и их мячи — это эталон надежности.
- Технологии:
- ULTRA-VIS: Фетр люкс-класса сохраняет внешний вид мяча даже после интенсивных тренировок.
- TOUR CORE: Мячи не теряют силу отскока и внутреннее давление со временем.
- Hydroguard: Водостойкое покрытие отталкивает влагу и грязь.
- Яркость: Специальная технология окрашивания делает мячи заметными при любой погоде.
3. Tour Tennis Black Line (бюджетный вариант)
- Универсальность: Подходят для всех типов покрытий.
- Доступность: Отличный выбор для тех, кто ищет качественные мячи по доступной цене.
🎾 Правильный выбор мяча — это уже половина успеха на корте! 💪
#Теннис#ТеннисныеМячи#Wilson#Slazenger#BlackLine#Тренировки#Советы
TENNIS EDUCATION family
СРОЧНО ДЛЯ ВСЕХ ДЕВОЧЕК!!!
WILSON × YVES SAINT LAURENT = ВАША НОВАЯ РАКЕТКА! 🎾✨
Это случилось! Два легендарных бренда создали не просто инвентарь — они создали арт-объект. Мощные технологии для победы и фирменный шик от YSL для безупречного стиля на корте.
Вы уже это видели? 🔥
#Wilson#YvesSaintLaurent#YSL#теннис#коллаборация#девушкивтеннисе#мечтасбылась