Что делать если нужно поставить какую-то 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
☃️970_из того, что есть☃️
Доброго времени суток, Россия🎄
На фото рабочий стол нашего специалиста по ремонту дронов. Можете ознакомиться с качеством запчастей.
Но даже из такого, казалось бы, мёртвого хлама, можно достать нужные детали для ремонта.
Работаем!
🎄До нового года остались считанные часы...🎄
❄️С наступающим ❄️
🇷🇺Мы в МАХ
Инженерный💪фронт
Призрак Новороссии
2025.
🎄rutube🌍vkвидео🌍дзен
#дрон#dji#mavic
#БПЛА#Mavic#Сброс Боевая работа расчётов БПЛА группировки "Запад" по укреплениям и укрытиям личного состава ВСУ на Богуславском направлении. Выучка и высокий уровень боевого мастерства расчётов в немалой степени обеспечивают продвижение линии фронта вперёд, позволяя пехоте отбивать у врага всё новые и новые позиции.
#БПЛА#Mavic#Сброс Пока страна на новогодних каникулах, боевая работа на Богуславском направлении идёт в штатном режиме. Свежая подборка новогодних сбросов от операторов БПЛА группировки "Запад"
#БПЛА#Mavic#Сброс Недавно, на Богуславском направлении, противник попытался отбить занятые бойцами группировки "Запад" позиции. В результате умелых и слаженных действий наших воинов, контратака противника была отбита, враг понёс потери и отступил. Это прекрасный подарок Родине от наших бойцов к празднованию Нового Года! Наше дело правое. Враг будет разбит. Победа будет за нами. С наступающим Новым Годом!
#БПЛА#Mavic#Сброс Боевая работа операторов БПЛА группировки "Запад" это не только успешные сбросы и уничтожение живой силы и техники врага. Бойцы сбрасывают над территориями которые контролируются противником листовки агитирующие врага оставить свои позиции и сдаваться в плен. Информационное противоборство - неотъемлемая часть современной войны.
#БПЛА#Mavic#Сброс На Богуславском направлении бойцы группировки "Запад" день за днём оттачивают свои боевые навыки. Оператор БПЛА Волчок демонстрирует своё искусство, великолепным сбросом уничтожая ещё одного бойца противника.
#БПЛА#Mavic#Сброс На видео военнослужащий группировки "Запад", воюющий на Богуславском направлении, позывной Элджей, рассказывает о своей боевой работе. Специалист в изготовлении зарядов для сбросов с БПЛА, готовит подарки для противника недалеко от ЛБС. Успехом пользуются именно фугасные заряды, которые помогают уничтожать опорные пункты противника для более упрощённого продвижения штурмовых групп.
#БПЛА#Mavic#Сброс Ночная боевая работа операторов БПЛА группировки "Запад" на Двуреченском направлении по живой силе противника за летний-осенний период. Архивные кадры.