Что делать если нужно поставить какую-то 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
#TRAINING
Jamoamiz bugun navbatdagi mashg‘ulotini o‘tkazdi. Mashg‘ulot qizish mashqlari bilan boshlanib, jismoniy va taktik yo‘nalishda davom etdi.
“MDIST SC”da boʻlib oʻtgan mashgʻulot jarayonlarida murabbiylar shtabi hujum va himoyadagi harakatlarga e’tibor qaratishdi. Mashg‘ulot yakunida kichik o‘yinlar tashkil etildi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
BMB PFC bugundan Oʻzbekiston kubogi guruh bosqichi bahslariga tayyorgarlik mashgʻulotini boshladi.
Mashgʻulot davomida tezkorlik, to‘p nazorati va kombinatsion harakatlarga alohida e’tibor qaratildi. Darvozabonlar esa individual tarzda darvozabonlar murabbiyi bilan maxsus mashg‘ulotlar bajarishdi.
Jamoamiz Jizzax shahrida boʻlib oʻtadigan uchrashuvlarga jiddiy tayyorgarlikni davom ettiradi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
BMB PFC bugun ham navbatdagi reja asosidagi mashg‘ulotlarni o‘tkazdi. Mashg‘ulot an’anaviy ravishda qizish mashqlari bilan boshlandi. Shundan so‘ng jamoa taktik yo‘nalishda ish olib borib, hujum va himoyadagi harakatlarni takomillashtirishga e’tibor qaratdi. Mashg‘ulot doimgidek “MDIST SC”da bo‘lib o‘tdi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
BMB PFC rejaga muvofiq mashg‘ulotlarni davom ettirmoqda. “MDIST SC”da boʻlib oʻtayotgan mashgʻulotlar mobaynida har bir futzalchi o‘z ustida ishlab, keyingi o‘yinlarga jiddiy tayyorgarlikni amalga oshirmoqda. Huddi shunday mashgʻulot jarayonlaridan fotolavhalarni tomosha qilishingiz mumkin.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Jamoamiz bugungi mashg‘ulotni stretching mashqlari bilan oʻtkazdi. Cho‘zilish mashqlari orqali futzalchilarimiz mushaklarni keyingi yuklamalarga tayyorlab, jarohatlar xavfini kamaytirishga alohida e’tibor qaratishdi.
Mashg‘ulot davomida tananing moslashuvchanligi va tiklanish jarayonlarini yaxshilashga qaratilgan mashqlar bajarildi. Bu esa jamoamizning umumiy jismoniy holatini mustahkamlashda muhim ahamiyat kasb etadi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Jamoamiz Jizzax shahriga yetib keldi va navbatdagi tur doirasidagi uchrashuvlar oldidan so‘nggi mashg‘ulotini o‘tkazdi. Mashg‘ulot jarayonlari yuqori kayfiyat va to‘liq tayyorgarlik ruhida bo‘lib o‘tdi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Bugungi mashgʻulot rejaga muvofiq yuqori kayfiyat va intizom bilan boshlandi. Dastlab jamoa umumiy qizib olish mashqlarini bajarib, organizmni asosiy yuklamalarga tayyorladi. Qizib olish jarayonlari qiziqarli va intensiv tarzda olib borildi.
Mashgʻulot davomida darvozabonlar ham alohida e’tiborda boʻlib, ular darvozabonlar murabbiyi boshchiligida individual mashgʻulotlar olib borishdi.
Shundan soʻng jamoa umumiy tarkibda taktik mashqlarga oʻtdi. Murabbiylar shtabi tomonidan belgilangan taktik topshiriqlar amaliyotda sinab koʻrildi va oʻyin davomida harakatlanish, pozitsion oʻyin hamda oʻzaro hamkorlik elementlari ustida ishlanildi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Bugun jamoamiz Oliy liga 9-turi oldidan rejalashtirilgan navbatdagi tayyorgarlik mashgʻulotini “MDIST SC” sport majmuasida oʻtkazdi. Mashgʻulot jarayonida futzalchilar murabbiylar shtabi boshchiligida asosan taktik ishlanmalar ustida ishlab, bo‘lajak uchrashuvlar uchun zarur bo‘lgan o‘yin tizimlarini amalda sinab ko‘rishdi.
Mashgʻulot yakunlangach, jamoamiz navbatdagi tur bahslarida ishtirok etish uchun Jizzax shahri tomon yoʻlga chiqdi. “Oq yoʻlbarslar” manzilga yetib borgach muhtasham “Za’faron Hotel” mehmonxonasiga joylashadi va uchrashuvoldi tayyorgarlikni davom ettiradi.
Eslatib oʻtamiz, jamoamiz Oliy liga 9-turidagi ishtirokini ertaga Olmaliqning “OKMK” jamoasiga qarshi bahs bilan boshlaydi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Jamoamiz bugun Universal sport majmuasida navbatdagi mashgʻulotini oʻtkazdi. Mashgʻulot jarayoni murabbiylar shtabi tomonidan ishlab chiqilgan turli taktik va texnik ishlanmalar asosida tashkil etildi.
Ertaga jamoamizni muhim bahs kutib turibdi — soat 17:00 da OKMKga qarshi maydonga tushamiz. Bugungi mashgʻulot uchrashuv oldi tayyorgarlik doirasida oʻtkazildi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Jamoamiz Andijon shahriga yetib keldi va navbatdagi tur doirasidagi uchrashuv oldidan so‘nggi mashg‘ulotini o‘tkazdi. Mashg‘ulot jarayonlari yuqori kayfiyat va to‘liq tayyorgarlik ruhida bo‘lib o‘tdi.
Telegram|Facebook|Instagram | Uzum
#TRAINING
Bugun jamoamiz ketma-ketlikda mashg‘ulot o‘tkazdi.
Dastlab, fitnes mashg‘uloti orqali jismoniy tayyorgarlik oshirildi, so‘ngra maydonda taktik mashg‘ulotlar olib borildi. Ushbu voqeliklarni jam qilgan videolavhani sizlarga taqdim etamiz.
Telegram|Facebook|Instagram | Uzum