Что делать если нужно поставить какую-то 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
¡¡¡LA FIEBRE AMARILLA HA VUELTO!!!
▪️ Habrá dos cabezas de serie Nº7/Nº8 (Lakers en el oeste y Miami en el este) en las finales de conferencia de una misma temporada por PRIMERA VEZ en TODA la historia de la #NBA.
▪️ Lakers es el SEGUNDO equipo del oeste que llega a las finales… https://t.co/BBQT90Jnivhttps://t.co/26DgtEcEl5
SAC 100-120 GSW (FT)
▪️ Golden State Warriors es el primer vigente campeón en TODA la historia de la #NBA que supera la primera ronda de los playoffs ganando un séptimo partido fuera de casa.
▪️ Los Warriors han ganado un séptimo partido fuera de casa por TERCERA vez en su… https://t.co/pUhVvpterC
Temporadas en las que Detroit Pistons fue el peor equipo de la #NBA 1965-66 (tardaron 23 años en volver a ser campeones) 1979-80 (tardaron 9 años en volver a ser campeones) 2022-23 Temporadas en las que San Antonio Spurs fue el peor equipo del oeste: 2022-23
🏀🇺🇸NBA
El épico nepotismo de LeBron James marca el inicio de la NBA#NBA
La NBA comienza en la madrugada del miércoles (hora española) y ya son toneladas de tinta las que han corrido en las últimas semanas sobre la mejor liga de baloncesto del mundo. Son los Boston Celtics, actuales campeones y equipo más laureado de la competición con 18 anillos, los principales protagonistas de la temporada 2024-25 por su favoritismo para repetir éxito. También los New York Knicks, que tras fichar al ala pívot Karl Anthony Towns pretenden romper la maldición de 51 años sin hacerse con la corona. Incluso los Dallas Mavericks de Luka Doncic levantan extensa expectación después de llegar a las finales de la última edición y haber adquirido a Klay Thompson, uno de los emblemas de la última dinastía de la competición, los Golden State Warriors.
LeBron James será el primer jugador de la historia de la liga en compartir vestuario con su hijo, Bronny James. La estrella de Los Angeles Lakers, tras ganar cinco anillos con cuatro equipos diferentes (dos con los Miami Heat, uno con los Cleveland Cavaliers y el último con los Lakers), buscaba un último desafío legendario, la última frontera. Y dado que tuvo al primero de sus retoños con tan solo 19 años (ahora tiene 39), optó por el nepotismo.
Una realidad que se consumó el pasado julio, cuando el jefe del clan James prolongó su relación con los californianos dos años a cambio de más de 100 millones de dólares y, a cambio, los Lakers seleccionaron en el Draft a su hijo en la posición 55, cifra reservada a jugadores a los que no se les intuye un sólido recorrido en la NBA. El aquelarre era una realidad, padre e hijo compartirían vestuario y jugarían en uno de los equipos más icónicos de la historia del baloncesto.
En uno de los primeros partidos de Bronny James con los Lakers en la liga de verano, competición de pura pretemporada en la que ni siquiera están presentes los mejores jugadores de cada franquicia, las cámaras captaron a Jaylen Brown, estrella de los Celtics, confesar lo siguiente: «No creo que Bronny tenga nivel para ser un profesional». Pidió disculpas el MVP de las últimas finales de la NBA, pero lo cierto es que el de Georgia abrió la veda de los ataques hacia el joven Bronny.
https://www.abc.es/deportes/baloncesto/epico-nepotismo-lebron-james-marca-inicio-nba-20241021042251-nt.html
🏆@Info288_deportes