Что делать если нужно поставить какую-то 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
💥PLAYMOBIL Asterix Barco Pirata
Aventuras en alta mar con Astérix y Obélix
✅OFERTA: 40.0€
❌ Antes: 59.99€
💰Ahorras un 33%🔥
Diversión garantizada para niños y niñas a partir de 5 años
👉 Hazte con él y vive emocionantes batallas navales
#playmobil#asterix#barcopirata#juguete#aventura#ninos#rebajas#descuentos
🛰️Oferta publicada en Cultura y Ocio
🤟Давно у нас не было тематических дней...
🆒 Встречаем Астерикса и Обеликса
🗣Олдскулы свело
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
🇬🇧Asterix and the Chieftain's Daughter #01
🇷🇺Астерикс и Дочь Верцингеторикса #01
В сопровождении двух вождей, таинственная девочка-подросток прибыла в деревню. Говорят, что её отцом был Верцингеторикс, храбрый вождь, потерпевший поражение в битве с римлянами. И теперь Цезарь хочет схватить её любой ценой. За дерзкой дочерью вождя присматривают Астерикс и Обеликс, но у неё другие планы, она сбегает от своих новых опекунов. Начинается погоня, девочку нужно разыскать до того, как это сделают римляне. Успеют ли наши неукротимые герои спасти её?
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское
🇬🇧Asterix and the Black Gold #01
🇷🇺Астерикс и чёрное золото #01
Финикийский купец Эпидермис забыл о том, что друид Панорамикс заказал горное масло — важный ингредиент волшебного зелья. Астерикс и Обеликс отправляются на Ближний Восток в поисках чёрного золота. А также смогут ли они перехитрить римского секретного агента Двануляшестикса и его невероятную складную колесницу, оснащенную по последнему слову шпионской техники?
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское
🇬🇧Asterix and the Picts #01
🇷🇺Астерикс и Пикты #01
После того как Астерикс и Обеликс спасают таинственного Пикта по имени Макарун, они отправляются в Каледонию, ныне Шотландию, чтобы вернуть его возлюбленной Камомилле, приёмной дочери старого короля. Однако коварный вождь Макабей планирует жениться на ней и захватить трон с помощью Римлян! Смогут ли Галла пройдя через метание брёвен, волынки, хмельную воду и гигантскую выдру в озере лох, воссоединить Макаруна и Камомиллу и задать трёпку Римлянам?
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское
🇬🇧Asterix and Obelix All at Sea #01
🇷🇺Астерикс и Галера Обеликса #01
Рабы восстали... и украли собственную галеру Юлия Цезаря. Надеясь укрыться в маленькой галльской деревушке, они понимают, что не всё так гладко. Обеликс испытал ужасные последствия передозировки волшебного зелья друида. Смогут ли друзья исцелить его с помощью Морсикуиса, верховного жреца Атлантиды? Вас ждёт накал страстей и захватывающие морские сражения с римским флотом!
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское
🇬🇧Asterix and the Great Divide #01
🇷🇺Астерикс и Большой Ров #01
Деревня в Галлии политически и физически разделена глубоким рвом из-за спора о лидерстве между соперничающими вождями Клевердиксом и Маджестиксом. Попытки преодолеть свои разногласия, сначала через диалог, а затем через битву, только увеличивают раскол.
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское
🇬🇧Asterix and the Mansions of the Gods #01
🇷🇺Астерикс и Обитель богов #01
Почему бы не оккупировать галльскую деревню, построив вокруг современный жилой комплекс? Такой план придумал модным римским архитектором Англаигус, чтобы помочь Цезарю сокрушить неукротимых галлов.
Соблазнит ли жителей деревни возможность заработать денег на новых римских соседях? Поможет ли секретного оружия галлов? И справится ли Астерикс с точечной застройкой.
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское
🇬🇧Asterix and the Roman Agent #01
🇷🇺Астерикс и Раздор #01
Юлий Цезарь затеял психологическую войну... Туллий Детригнус — римский агент который гарантированно сеет вражду, зависть и раздор где угодно. Сможет ли он заставить галлов подозревать друг друга в предательстве? Неужели Астерикс действительно продаст Риму секрет волшебного зелья? И смогут ли Астерикс, Обеликс и Панорамикс перехитрить коварного Детригнуса и вернуть мир в деревню?
#астериксиобеликс#asterixandobelix#астерикс#asterix#обеликс#obelix
#авторское