Что делать если нужно поставить какую-то 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
Ровно 29 лет назад (12.08.1994 по местному времени) в шедевре psyop (нет... на самом деле, конечно же, да), сериале "Секретные материалы" появляется Алекс Крайчек, напарник Малдера под прикрытием, искатель Тунгусского метеорита и ценитель непарадного Петербурга. Но самое главное - русский человек в дипстейте! То нагибающий Консорциум и Малдера, то огребающий от них. В общем, живущий полной жизнью, даже с одной рукой... #Deepstate#XFiles
И ещё одно событие, мимо которого Левиафан не мог пройти/проплыть в этот день. Сегодня 55 лет отмечает умница, красавица, комсомолкаДжиллиан Андерсон. Трамплином её карьеры, конечно же, стала роль агента КГБ ФБР Даны Скалли в «Секретных материалах», просто таки секс-символа сопротивления зловредному «глубинному государству», да ещё в союзе с пришельцами. Кстати, говоря в нынешнем сентябре 30-летие отмечает и сам сериал, ставший не просто культовым явлением, но шедевром psyop. Но вернёмся к Скалли… в смысле к Джиллиан Андерсон. Она ведь родилась в день взрыва атомной бомбы над Нагасаки (не в буквальном смысле, конечно же, просто это дело тоже пришлось на 9 августа). А потому Левиафан желает ей по-прежнему оставаться такой же яркой и энергичной как атомная бомба!!!
#Deepstate#XFiles
Вчера не стало Марка Сноу — композитора, сочинившего музыку к легендарному сериалу «Секретные материалы». Честно, никогда фанатом его не был, и все мое знакомство ограничилось лишь факультативным просмотром некоторых эпизодов в детстве по Первому каналу.
Но вдруг понял, что, в общем-то, ушла эпоха. Сноу сочинил мелодию, которую, наверное, будут помнить и десятилетия спустя. Как и сам сериал, даже если его рано или поздно радикально перезапустят. Это неизбежно, раз уж из затеи с прямым продолжением ничего не вышло.
#ВИДЕОТЕКА
#XFiles
#СекретныеМатериалы
#МаркСноу
Сегодня 2 июля день НЛО!👽🛸 О, этих товарищей у меня столько, что в одну подборку не влезет!😁Я, как человек воспитанный Малдером и Скалли, знаю, что истина где-то рядом! На 1 слайде автопортрет в шапочке из фольги☝️😌, напишите ваш любимый фильм про НЛО, инопланетян, близкие контакты 😁, мой, после X Files, это "Контакт" 1997 года с Джоди Фостер и Макконахи, но еще куча есть любимых, если я начну перечислять, вам не останется 😁, но чтоб вы понимали лет цать назад я на серьёзных щщщах хотела вступить в "Космопоиск" 😎 !
#арт#подборка#картины#нло#космос#инопланетяне#ufo#Xfiles
За каждым великим агентом ФБР стоит... целая толпа неоднозначных личностей. От тех, кому доверяешь свою жизнь, до тех, кто её заберёт, не моргнув. Легендарный второй план X-Files.
#xfiles#секретныематериалы#thexfiles#trustnoone#thetruthisoutthere#курильщик#cgbspender#скиннер