Что делать если нужно поставить какую-то 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
📺- CONTROL DE AEROPUERTOS: USA -📺
Título original: To Catch a Smuggler
Género:#Reality
Temporadas: 9 📡
Año: 2020 - Presente
Origen: EEUU 🇺🇸
Tráiler: youtu.be/nzuvwHLShEQ
Sinopsis:
Una serie que explora las historias cargadas de intensidad y emociones protagonizadas por la patrulla aduanera de Estados Unidos en algunos de los aeropuertos más concurridos del mundo por millones de pasajeros diariamente. Desde el Aeropuerto Internacional de Los Ángeles, Aeropuerto La Guardia y el Aeropuerto John F. Kennedy, entre otros. Descubra cómo se capturan a estos traficantes y sus cargamentos escondidos en lugares nunca imaginados.
Disponible:Disney+
@SeriesClubHD
🎥- EL GRAN BRUNCH -🎥
Título Original: The Big Brunch
Género:#Reality
Temporadas: 1 📼
Año: 2022
Origen: EEUU 🇺🇸
Tráiler:dai.ly/x8fe8e2
Sinopsis:
The Big Brunch es una serie de competencias de cocina que celebra las voces culinarias más inspiradoras y desconocidas del país.
A los chefs se les ofrecerá la oportunidad de compartir sus historias y sus sueños comerciales, al mismo tiempo que competirán por un premio que les cambiará la vida. Todo mientras busca formas innovadoras y personales de redefinir lo que significa cenar entre las 11 a.m. y 3 p.m. La serie, además de dar a conocer chefs busca ser la oportunidad de que todo el mundo se dé cuenta de que tienen al menos un amigo, un familiar o un compañero de trabajo que es extraordinario en lo que hace y lo positivo que es, poder apoyarlo en la búsqueda de sus sueños.
Disponible:Max
@SeriesClubHD
📺- IN THE EYE OF THE STORM -📺
Título Original: In The Eye of the Storm
Género:#Reality
Temporadas: 1📡
Año: 2024
Origen: EEUU 🇺🇸
Tráiler: youtu.be/BdMJ3G9Otqw
Sinopsis:
Desde tornados hasta incendios forestales, las imágenes inmersivas capturan el epicentro de impactantes desastres naturales en tiempo real como nunca antes.
Disponible:Movistar+ | Max
@SeriesClubHD
📺- LA CASA DE EMPEÑOS -📺
Título original: Pawn Stars
Título Alternativo: Estrellas del Empeño
Género:#Reality#Comedia
Temporadas: 17 📡
Año: 2009 - Presente
Origen: EEUU 🇺🇸
Tráiler: youtu.be/S46rcW5ADV4
Sinopsis:
Rick Harrison y su familia poseen y dirigen una casa de empeños en Las Vegas. Compran, venden y tasan artículos de valor histórico.
Disponible:A Tres Player | TiviFy
@SeriesClubHD
🎥- CATFISH: MENTIRAS EN LA RED -🎥
Título Original: Catfish: The TV Show
Género:#Reality#Romántica#Drama#Documental
Temporadas: 9 📼
Año: 2012 - Presente
Origen: EEUU 🇺🇸
Tráiler:youtu.be/JbQyoH819rM
Sinopsis:
Nev Schulman y Max Joseph ayudan a las personas que se han enamorado en Internet a comprobar la autenticidad de la identidad de sus amantes.
Disponible:Pluto TV | Movistar+ | Paramount+
@SeriesClubHD