Что делать если нужно поставить какую-то 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
🏀🇪🇺Euroliga
Partizan 79-87 Barcelona#Euroliga#Partizan#Barcelona
El Barça dio en belgrado un clínic de cómo ganar un partido en dos tiempos. Para el primero dio un recital, en el segundo (12-30) y tercer cuarto, en el que barrió a su rival con 15 minutos fabulosos. Para el segundo tuvo que sacar los nervios de acero y solventar, en el minuto y medio final, la torpeza de tirar 22 puntos de ventaja.
https://www.marca.com/baloncesto/euroliga/2024/11/13/barca-sale-vivo-belgrado-ganar-dos-veces.html
Otros marcadores
Paris 83-77 Zalgiris
🏆@Info288_deportes
🏀🇪🇺Euroliga
Real Madrid 93-86 Partizan#Euroliga#RealMadrid#Partizan
Es cuestión de tiempo. O eso al menos asegura Chus Mateo, labrando su nuevo Real Madrid, acoplando a los fichajes y echando de menos (cómo no) a los que se fueron. El Partizan de Obradovic sufrió la versión más parecida de lo que este equipo quiere llegar a ser. Especialmente en la segunda mitad, donde los blancos no extrañaron ni a Tavares.
https://www.elmundo.es/deportes/baloncesto/euroliga/2024/10/10/67082b82fdddff93b98b4584.html
Otros marcadores
Anadolu 78-83 Fenerbahce
Asvel 87-85 Virtus
Panathinaikos 94-79 Bayern
🏆@Info288_deportes
18-летний финский баскетболист Миикка Мууринен покидает белградский «Партизан» после 4,5 месяцев в составе команды
Новый тренер сербского клуба, испанец Жоан Пенарройя, перестал выпускать Мууринена на площадку, объясняя это тем, что талантливый финн не предан команде.
«Прежде всего, хочу сказать, что у Миикки есть потенциал стать отличным игроком, но этого недостаточно. Я думаю, что этот парень думает только о карьере в США, и я ничего не ожидаю от человека, который собирается покинуть клуб», – заявил тренер «Партизана».
Команда Пенарройи надеется завоевать Кубок Радивое Корача, но на турнире для легионеров предусмотрено всего четыре места, и испанец почти наверняка не станет брать в состав 18-летнего финского игрока.
Напомним, что Мууринен был назван лучшим молодым игроком Евробаскета-2025 и получил от болельщиков прозвище Slim Jesus. В ближайшее время запланированы отборочные матчи чемпионата мира. Ожидается, что Миикка откликнется на вызов в сборную Финляндии.
#Partizan#MiikkaMuurinen
@NewsSerbia
🏀🇪🇺Euroliga
Zalgiris 74-67 Barcelona#Euroliga#Zalgiris#Barcelona
El Barcelona tardará mucho tiempo en olvidar el nombre de Sylvain Francisco. El escolta del Zalgiris con pasado en el BAXI Manresa firmó un final de partido antológico para ejecutar a los azulgranas, incapaces de detener la eclosión del pequeño jugador francés, que metió 15 de sus 19 puntos en los últimos cinco minutos para sentenciar el partido (74-67).
https://www.marca.com/baloncesto/euroliga/2024/10/03/francisco-explota-aniquila-barcelona-kaunas.html
Baskonia 88-82 Partizan#Euroliga#Baskonia#Partizan
Arrancó el curso europeo 24/25 en el Buesa Arena para el Baskonia en un partido en el que se enfrentaban a un Partizan de Belgrado plagado de estrellas que fue con todo a tierras vitorianas para tratar de llevarse una victoria que acabaron consiguiendo los de Pablo Laso con un marcador final de 88-82 .
https://www.marca.com/baloncesto/euroliga/2024/10/03/baskonia-fuerte-casa-resiste-poderio-interior-partizan.html
Bayern 97-89 Real Madrid#Euroliga#Bayern#RealMadrid
La temporada no ha hecho nada más que comenzar, pero el Real Madrid empieza a sumar demasiados pinchazos en este arranque de curso. Después de caer en la final de la Supercopa de España y de perder en la primera jornada de la Liga Endesa, los blancos acumularon un nuevo traspié en su debut en la Euroliga.
https://www.elespanol.com/deportes/baloncesto/20241003/real-madrid-ahoga-ultimo-cuarto-bayern-empieza-mal-pie-euroliga/890661530_0.html
Otros marcadores
Alba 77-87 Panathinaikos
Monaco 93-80 Milano
Maccabi 89-82 Asvel
🏆@Info288_deportes
☄️Живешь на Украине?Надоело прятаться (прятать) себя и своих близких от мобилизации? Не поддерживаешь политику Зеленского, не являешься сторонником "Евромайдана", не можешь больше терпеть беспредел ТЦК, враньё пропаганды про "швидку перемогу"? Хочешь, чтобы эта война скорее закончилась и наступил мир? Просто напиши в наш бот!
✔️Анонимность и безопасность, а также вознаграждение за риски и полезную информацию гарантированны. Ты сам будешь решать, какие задачи тебе по силам и возможностям.
✊Стань частью 🛡сопротивления⚔, приблизь нашу общую Победу! Не дай уничтожить свою страну марионеточным режимом Зеленского и его западными кураторами!
▶️Максимальный репост для того, чтобы каждый имел шанс влиять на свою жизнь, будущее для себя, своих близких и своей страны!
👉Ссылка на бот: @Partizanb_bot
#Украина#СВО#РусскоеСопротивление#РусскийМир#Россия#Бот#Партизан#Partizan
Баскетболисты «Партизана» не смогли выйти в финал Кубка Радивое Корача, потерпев в полуфинале сокрушительное поражение от «Меги» со счётом 58:80.
Надо отметить, что в начале четвертой четверти, когда «Мега» вела со счетом 61:47, произошла почти часовая пауза, потому что судьи покинули площадку из-за угроз со стороны болельщиков «Партизана». Игра продолжилась после того, как агрессивных «гробарей» вынудили покинуть трибуны.
Финальный матч между белградскими клубами «Црвена Звезда» и «Мега» начнётся сегодня в 20:30 на площадке спортивного центра «Чаир» в городе Нише.
#basketball#Serbia#Partizan#Mega#košarka#navijači
@NewsSerbia
️Живешь на Україні? Набридло ховатися (ховати) себе і своїх близьких від мобілізації? Не підтримуєш політику Зеленського, не є прихильником «Євромайдану», не можеш більше терпіти свавілля ТЦК, брехню пропаганди про «швидку перемогу»? Хочеш, щоб ця війна швидше закінчилася і настав мир? Просто напиши в наш бот!
Анонимность і безпека, а також винагорода за ризики та корисну інформацію гарантовані. Ти сам будеш вирішувати, які завдання тобі до снаги та можливостей.
Стань частиною 🛡сопротивления⚔️, наблизь нашу спільну Перемогу! Не дай знищити свою країну маріонетковим режимом Зеленського і його західними кураторами!
️Максимальный репост для того, щоб кожен мав шанс впливати на своє життя, майбутнє для себе, своїх близьких і своєї країни!
Посилання на бот: @Partizanb_bot
#Україна#СВО#РуськийСпротив#РуськийСвіт#Росія#Бот#Партизан#Partizan