Что делать если нужно поставить какую-то 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
El Real Madrid venció 3-0 al Cádiz el día de hoy y se proclamó campeón de La Liga EA sports
Por otro lado el Girona venció 4-2 al FC Barcelona y se lograron meter en la próxima edición de la UEFA Champions League por primera vez en su historia
Felicidades a los 2 clubes👏
@Fut_planet⚜️#RealMadrid🇪🇸#Girona🇪🇸#LaLiga🇪🇸
⚽️🇪🇸Liga
Girona 1-4 Barcelona#Liga#Girona#Barcelona
Cinco partidos, cinco victorias y las dos últimas con goleada incluida. Hay líder sólido en LaLiga y parece que para rato. Este Barça de Hansi Flick empieza a meter miedo a sus rivales con un juego muy bonito de ver en el que hay que destacar su mejoría en defensa, su pegada en ataque y una presión para recuperar balón que empieza recordar a la que le llevó a los títulos en la época de Messi.
https://www.marca.com/futbol/primera-division/cronica/2024/09/15/66e6b26122601d7d588b457f.html
🏆@Info288_deportes
⚽️🇪🇸Liga
Atlético 3-0 Girona#Liga#Atlético#Girona
Atlético de Madrid estrenó este domingo su casillero de victorias en LaLiga EA Sports 2024-2025 después de imponerse con autoridad por 3-0 al Girona FC en el Estadio Cívitas Metropolitano, un partido en el que los rojiblancos fueron superiores ante un rival un tanto inocente.
https://www.europapress.es/deportes/futbol-00162/noticia-atletico-brinda-noche-solida-metropolitano-20240825233757.html
🏆@Info288_deportes
⚽️🇪🇸Liga
Girona 2-1 Athletic#Liga#Girona#Athletic
Los mediodías de otoño con sol son de agradecer. Que se lo digan a Gazzaniga, que se fue del partido con tres penaltis detenidos a Berenguer, Iñaki Williams y Herrera. Pulido Santana pitó tres penaltis por recomendación del VAR, ya que no había visto ninguna de las acciones, que fueron sancionables a la vez que evitables. Tampoco estuvo fino para advertir que en el segundo Gazzaniga se adelantó y tuvo que repetirse. El argentino ni se inmutó. Si le tiran seis, los seguiría parando. En el otro área, a un paso del final, Padilla no pudo detener el lanzamiento de Stuani.
https://www.marca.com/futbol/primera-division/cronica/2024/10/06/67028ae0e2704e531e8b45a5.html
🏆@Info288_deportes
⚽️🇪🇸Liga
Girona 0-1 Real Sociedad#Liga#Girona#RealSociedad
La Real Sociedad volvió del parón con una buena victoria, firmada con un gol de Mikel Oyarzabal, en un partido en el que los txuriurdin pudieron haber marcado algún tanto más, pero tras no hacerlo terminaron sufriendo frente a un Girona que acusó las bajas.
https://www.marca.com/futbol/primera-division/cronica/2024/10/19/6713c6c5e2704e63b98b4592.html
🏆@Info288_deportes
⚽️🇪🇸 Liga
Valencia 2-0 Girona#Liga#Valencia#Girona
No importa lo profunda que sea la crisis o la salvajada que cometa Peter Lim, el Valencia siempre podrá contar con Mestalla para salir del agujero. El cuadro de Baraja ha sumado su primer triunfo del curso ante el Girona y ya no es el colista de Primera división. 13 partidos y 159 días ha necesitado el Valencia para volver a sumar de tres y volver a respirar tras un comienzo de Liga terrible que ha encendido todas la alarmas, pero no ha impedido que más de 40.000 fieles se citen en su coliseo para reanimar a su equipo.
https://www.marca.com/futbol/primera-division/cronica/2024/09/21/66ee7c6546163f58708b45a4.html
🏆@Info288_deportes
⚽️🇪🇸Liga
Getafe 0-1 Girona#Liga#Getafe#Girona
El Girona tumbó la muralla del Coliseum por primera vez esta temporada gracias a un gol de Yangel Herrera en la única ocasión de los de Míchel en un encuentro en el que los suyos tuvieron que jugar 'a otra cosa' y sufrir de lo lindo para llevarse la victoria. Los de Bordalás, de nuevo con problemas mayúsculos para general peligro real, siguen bordeando el descenso y se marchan muy tocados a la ventana de selecciones.
https://www.marca.com/futbol/primera-division/cronica/2024/11/10/6730df79268e3ee1418b4578.html
🏆@Info288_deportes