Что делать если нужно поставить какую-то 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
#ITC#Robototexnika
⚡️Markazimizda Robototexnika kurslari boshlanmoqda
Kursning afzalliklari:
➖O'quv jarayonida zarur bo'lgan materiallar markaz tomonidan beriladi;
➖ Kompyuter va internet bilan jihozlangan shinam xonalar;
➖ Darslar professional mutahassis tomonidan olib boriladi;
➖ Respublika, viloyat hamda jahon miqyosidagi musobaqa va tanlovlarga borish imkoniyati;
➖ Hamyonbop narxlar
🚀 Dastlabki guruh uchun faqatgina 10 nafar o'quvchi qabul qilamiz.
Batafsil ma'lumot uchun:
Tel: 990009627 | 950033748
Ijtimoiy tarmoqda murojaat:
Menejer | Telegram kanal | Mutahassis
#ITC#Robototexnika
Nocomment | Ta'rif shart emas
🔥Markazimizda o'z ish faoliyatini boshlagan Robototexnika bo'yicha professional mutahassis Azizxon Akramov tomonidan yasalgan telefon orqali boshqariladigan mashina
@ITCenter_Yaypan — zamonaviy kasblar markazi
IT Yakkabog’
Birinchi dars – birinchi natija! 💥
O‘quvchilarimiz qo‘llarida wedo 2.0 , oldida g‘oya — natijada esa harakatlanadigan robot 🤖
Har bir katta ixtiro — kichik bir darsdan boshlanadi.
#robototexnika#boshlanish#o‘quvchilarijodi #texnologiya#education
IT Yakkabog’
Birinchi dars – birinchi natija! 💥
O‘quvchilarimiz qo‘llarida wedo 2.0 , oldida g‘oya — natijada esa harakatlanadigan robot 🤖
Har bir katta ixtiro — kichik bir darsdan boshlanadi.
#robototexnika#boshlanish#o‘quvchilarijodi #texnologiya#education
📍 Yakkabog‘ tumanida ilk bor ochilayotgan IT markazi o‘z qabullarini boshladi!
📞 Batafsil ma’lumot: +998(99)-126-32-07
#Yakkabog#IT#SMM#Dizayn#Robototexnika#Kelajak#yakkabog’
🚀Kelajak kasblarini o‘rganish endi Yakkabog‘liklar uchun yanada qulay!
📍 Yakkabog‘ tumanida ilk bor ochilayotgan IT markazi o‘z qabullarini boshladi!
✨Bu yerda siz: 💻 IT | 📱 SMM | 🎨 Grafiz dizayn | 🤖 Robototexnika kabi kasblarni nafaqat o’rganib, balki haqiqiy proektlar ustida ishlab ko’rasiz!
Joylar soni cheklangan!
Hozirning o‘zida bog‘laning va kelajak sari ilk qadamni tashlang! ✨
📞 Batafsil ma’lumot: +998(99)-126-32-07
#Yakkabog#IT#SMM#Dizayn#Robototexnika#Kelajak
🚀 IT Yakkabog’da barcha kurslarga qabul boshlandi!
💡 Orzuyingizdagi IT kasblariga ilk qadamni qo’ying!
⏳ Joylar soni cheklangan, imkoniyatni boy bermang!
📞 Batafsil ma’lumot uchun:
+998 (99) 126-32-07
#kelajak#robototexnika#dizayn#smm#it#yakkabog#fyp
🤖🌐 Diqqat, kelajak muhandislari va ijodkorlari! 🌟
🔧 Ziyo Day doirasida #Robototexnika bo'yicha MasterClass! 🔧
📅 16 dekabr, 13:15-15:00
5-8-sinf o‘quvchilari uchun robot yig‘ish bo‘yicha amaliy tajribaga ega bo‘ladigan qiziqarli robototexnika mahorat darsi! 🚀
Tadbir dasturi:
13:15-13:35: Robototexnika kursi taqdimoti bilan kelajak eshigini oching.
13:35-13:50: Robotning elementlari va ularning roli haqida hamma narsani bilib oling.
13:50-15:00: O'z robotingizni yaratish imkoniyati!
Ziyo Day robototexnika olamida yorqin xotira va unutilmas sarguzasht bo'ladi. Hammani taklif qilamiz! 💡🛠
Tadbirha qatnashish uchun @YouthCenterZiyo telegram kanalimizda oldindan ro'yxatdan o'tishni unutmang.
🤖🌐 Внимание, будущие инженеры и творцы! 🌟
🔧#МастерКлассПоРобототехнике в рамках ziyo day! 🔧
📅 16 декабря, 13:15-15:00
✨ Готовьтесь к захватывающему опыту робототехники, специально для школьников 5-8 классов!
🚀 Программа события:
13:15-13:35: Открой дверь в будущее с презентацией курса робототехники.
13:35-13:50: Разберем каждую деталь - узнай всё о элементах робота и их роли.
13:50-15:00: Ваш шанс создать своего робота! - Практический этап, где вы воплотите свои идеи в жизнь.
Ziyo day станет ярким воспоминанием и незабываемым приключением в мире робототехники. Приглашаем всех желающих! 💡🛠
Не забудьте зарегистрироваться заранее в нашем телеграм-канале @YouthCenterZiyo, чтобы гарантировать себе место на мероприятии. #Робототехника#Образование
#Robottexnika#Ta'lim #ZiyoDay#TerritoryOfYourDevelopment#EducationRevolution#ZiyoCommunity#ТерриторияТвоегоРазвития#ZiyoJamiyati#SizningRivojlanishHududi.