Что делать если нужно поставить какую-то 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
BAMBUK NAZARIYASI🎋
Bambukni ekib, muntazam sug'orib va parvarish qilsangiz, birinchi yil hech qanday o'zgarish sezilmaydi. 2-, 3-, va 4-yilda ham biror o'sish alomatlari ko'rinmaydi.
Ammo aslida, bu vaqt davomida bambuk yer ostida kuchli ildiz tizimini rivojlantiradi.
So'ngra, 5-yil kelib, bambuk bir necha hafta ichida 25-30 metr balandlikka o'sishi mumkin!
Bu nimani anglatadi?
⭐️ Sabr-toqat: Hayotda muvaffaqiyatga erishish uchun vaqt va tinimsiz mehnat talab etiladi. Dastlab natijalar ko'rinmasa ham, ishonchni yo'qotmang.
🔥 Mustahkam asos: Bambukning ildizlari kabi, natijaga erishish uchun ham puxta tayyorgarlik va kuchli poydevor kerak.
💥 Portlash vaqti: To'g'ri vaqt kelganda, barcha mehnatlar natijasi yorqin namoyon bo'ladi.
Xulosa: Hayotda bambuk singari sabr qiling, mustahkam asos quring va oxirida katta natijalarga erishing!
@Azamatjon_design | #eslatmalar
Bu qoida hayotda ko‘p muammolarni oldini olishga yordam beradi.
Jahl ustida javob, xursandlikda va’da , kayfiyat yomonligida esa qaror bermaslikka harakat qilaman. Chunki bu oddiy qoidaga amal qilmagan har bir lavhadan qattiq pushaymon bo'lganman!
Xulosa: Hissiyotlar ta’sirida shoshilinch qaror bermaslik kerak!
@Azamatjon_design | #eslatmalar
BAMBUK NAZARIYASI🎋
Bambukni ekib, muntazam sug'orib va parvarish qilsangiz, birinchi yil hech qanday o'zgarish sezilmaydi. 2-, 3-, va 4-yilda ham biror o'sish alomatlari ko'rinmaydi.
Ammo aslida, bu vaqt davomida bambuk yer ostida kuchli ildiz tizimini rivojlantiradi.
So'ngra, 5-yil kelib, bambuk bir necha hafta ichida 25-30 metr balandlikka o'sishi mumkin!
Bu nimani anglatadi?
⭐️ Sabr-toqat: Hayotda muvaffaqiyatga erishish uchun vaqt va tinimsiz mehnat talab etiladi. Dastlab natijalar ko'rinmasa ham, ishonchni yo'qotmang.
🔥 Mustahkam asos: Bambukning ildizlari kabi, natijaga erishish uchun ham puxta tayyorgarlik va kuchli poydevor kerak.
💥 Portlash vaqti: To'g'ri vaqt kelganda, barcha mehnatlar natijasi yorqin namoyon bo'ladi.
Xulosa: Hayotda bambuk singari sabr qiling, mustahkam asos quring va oxirida katta natijalarga erishing!
@Azamatjon_design | #eslatmalar
SHOGIRLIK INQIROZI!
Hozirgi kuzatuvlarimdan kelib chiqib, dolzarb va juda muhim masalaga e'tibor qaratmoqchiman.
Hozirda (turli sohalarda tez daromad keltiruvchi kasblar) bo‘yicha kurslarni bitirgan o‘quvchilar aksariyat hollarda to‘g‘ridan-to‘g‘ri ishga kirishga intilmoqda. Bu yaxshi yo‘l, lekin birdaniga 3-6 oy ichida mutaxassis bo‘lish haqiqatga yaqin emas.
Avvallari (sartaroshlik, ustachilik va hokazo) kasblar bo‘yicha ustalarga shogird tushilar, ularning yonida yillar davomida ishlanar edi. Qachonki usta "Fotiha" bersa, shogird mustaqil ish boshlagan. Ya'ni bu jarayon mutaxassis bo‘lish darajasiga yetguncha 3-5 yil yoki undan ham ziyod davom etgan. Hech qanday haq evazsiz va kutuvlarsiz, ustozga xizmat qilib tajriba orttirilgan.
Oxirgi paytlarda esa bu holat yo‘qolib borayotgandek go'yo. Kursni bitirgan ko‘plab "mutaxassislar" o‘zlarini sohaning Pro Ultra ustasi deb bilishadi. Lekin ular o‘z bilimlari va amaliy tajribasi yetarli emasligini anglamaydi. Va bundaylardan ko'plab ish beruvchilar ham aziyat chekmoqda.
Xulosa: 3-6 oylik kurs bilan to‘laqonli mutaxassis bo‘lish qiyin. Qaysi zamonaviy kasbni o‘rganmang, o‘zingizga shu sohada katta tajribaga ega ustoz toping va ulardan bilim oling. Ya'ni tavsiyam kerak bo'lsa tekinga ishlang! Ustoz bo'la oladigan mutaxassislar bilan ishlang va ulardan bilimlarni, duolarni oling! Ustoz bilan ishlash, rivojlanish - sizni haqiqiy professional qiladi
@Azamatjon_design#eslatmalar#problem_solution
#PROBLEM
Dunyoda adolatsizlik bor – ba’zilar ko‘p narsaga ega, boshqalar esa hech narsasiz...
#SOLUTION
Odamlar bir-biriga yordam berishi kerak – agar hamma faqat o‘zini o‘ylasa, hayot yomonlashadi. Faqat birlikda adolat bo‘lishi mumkin.
Xulosa:
Ba’zilarning ko‘p narsaga ega bo‘lishi faqat boylik bilan emas, balki salohiyat, imkoniyat, nasab, sog‘liq, yashash joyi kabi ustun jihatlar bilan farqlanadi. Hech narsasiz deganda esa, sog‘liq muammolari, nizolar, ochlik, qashshoqlik, ilmsizlik va boshqa imkonsiz holatlar tushuniladi.
Yechim:
Odamlar bir-biriga yordam berishi kerak, ya’ni bilgan bilmaganga o‘rgatishi, to‘q ochni to‘ydirishi, imkonli inson imkonisizga ko‘mak berishi lozim. Ya’ni, biz qanday vaziyatda bo‘lmaylik, bizdan pastdagilarga yordam berishimiz, o‘z ustimizda ishlashdan to‘xtamasligimiz va shukr qilishimiz kerak.
@Azamatjon_design#eslatmalar#problem_solution