Что делать если нужно поставить какую-то 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
💥Kit Supervivencia Magnesio Mechero 7 En 1
Un compañero indispensable para tus aventuras al aire libre
✅OFERTA: 7.99€
❌ Antes: 9.99€
💰Ahorras un 20%🔥
Encendedor resistente a la intemperie con mango de madera hecho a mano
👉 Prepárate para la naturaleza
#supervivencia#acampada#senderismo#outdoor#navidad#descuentos#viral
🛰️Oferta publicada en Deporte y Outdoor
💥Brújula Profesional Fluorescente
Encuentra tu camino con estilo
✅OFERTA: 7.59€
❌ Antes: 9.99€
💰Ahorras un 24%🔥
Diseño impermeable y multifuncional ideal para senderismo y supervivencia
👉 Explora la naturaleza con confianza
#brujulaprofesional#brujasdeorientacion#brujulaimpermeable#senderismo#supervivencia#outdoor#navidad
🛰️Oferta publicada en Deporte y Outdoor
💥Paquete de 4 linternas LED para acampar ILEEDear
Ilumina tus aventuras al aire libre con total seguridad
✅OFERTA: 21.48€
❌ Antes: 29.99€
💰Ahorras un 28%🔥
Máxima luminosidad para emergencias y actividades nocturnas
👉 Hazte con ellas y brilla en cada momento
#linternasled#camping#supervivencia#huracanes#apagones#outdoor#ofertas#navidad
🛰️Oferta publicada en Deporte y Outdoor
💥LifeStraw Peak Series - Filtro de Agua Personal
Tu compañero de aventuras en esta Navidad
✅OFERTA: 22.4€
❌ Antes: 29.95€
💰Ahorras un 25%🔥
Agua segura en cualquier situación, ligero y fácil de transportar
👉 Asegura tu hidratación ahora
#lifestraw#filtrodeagua#supervivencia#outdoor#emergencia#montana#navidad#ofertas
🛰️Oferta publicada en Deporte y Outdoor
💥RoverTac Multitool Hacha Hacha
El regalo perfecto para los amantes de la aventura
✅OFERTA: 19.99€
❌ Antes: 24.99€
💰Ahorras un 20%🔥
14 herramientas en 1 para cualquier situación en camping, senderismo o supervive
👉 Equípate para la aventura esta Navidad
#multitool#herramientamultiuso#camping#senderismo#regalosparahombres#navidad#supervivencia#outdoor
🛰️Oferta publicada en Deporte y Outdoor
🈴⊳Manga: GACHIAKUTA
✔️Tipo: Manga
✔️Géneros: #Acción#Drama
#Aventura#Supervivencia
#Fantasía#Apocalíptico
✔️Estado: #Emisión
✔️Capitulos: 144
✔️Fansub: Ukogi Fansub
🔰Sinopsis: En los barrios bajos, habitan los descendientes de criminales que la gente al otro lado del lindero desdeña y discrimina como meros “lugareños”. Ludo es uno de ellos, un niño huérfano que vive con su padre adoptivo Legto y que usa fuerza física más allá de lo ordinario como un arma para ganarse la vida. Un día, sin embargo, lo acusan de un crimen que no cometió y lo arrojan al “abismo” al que incluso los habitantes de los barrios bajos temen.
#Gachiakuta