Что делать если нужно поставить какую-то 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
#frilans
Ziyo kitoblar do'koni uchun dizayn tayyorladik!
🌙 Insha'alloh 23-mart sanasidan Ramazon oyi boshlanishi kutilmoqda. Shu sababli buyurtma asosida @ziyouzyaypan uchun «Ramazon Taqvimi» ni tayyorladik.
🗒 Azizlarga saharlik, iftorlik vaqtlarini hamda duolarni eslatib turishda yordamchi bo'ladi degan umiddamiz.
☺️ Taqvimlarimiz sizgacha yetib borsa va foydasi tegsa, duolaringizda bizni ham eslab qo'yishni unutmang!
📞 Dizayn xizmatlari uchun:
+998990009627 | @Ibrohimjon_65
@ITCenter_Yaypan
Kwork'da profil ochib qoʻydim. Bir ikkita ishlardan yengillab olsam, boshida kichikroq buyurtmalar olishga harakat qilib koʻrishim mumkin.
Masalan, boshida mobil dizaynlarga aloqador buyurtmalarga eʼtiborimni qaratishim mumkin.
— Mana buyerda aytilgan dasturchi aka esa, bitta proektni kelishib qoʻyib, 4-5 oydan beri, mijozdan feature'lar qoʻshtirib ketayotgan ekan. Yaʼniki, oylik emas, bitta summaga (fixed) kelishilgan proektni qoʻshimchalar qoʻshish bilan ishlab borayotgan ekanlar.
🎚️ Shu uchun mijoz bilan kelishuvni puxta qilish kerak, iloji boricha dizayn boʻyicha buyurtmani MVP bosqichiga deb kelishish kerak yoki qoʻshiladigan feature'larni oldindan aniqlab olib, shundan chiqmay ishlash kerak.
@suxrobblog » #kwork#frilans
💻Kwork.ru bo‘yicha fikrlarimni bo'lishishda davom etaman...
Hozirda bir mijoz bilan faol tarzda ishlayapman. Bundan tashqari, yaqinda yana bir mijozdan 5 ta loyiha chiqdi (har biri taxminan 30 000± rubl atrofida edi), lekin hozircha ularni rad etdim. Sababi, avval mavjud mijozlarimning ishini tugatib bermoqchiman. Ularga, hozirgi ishlarim tugashi bilan ularning loyihalarini olishim mumkinligini ham aytib qo‘yganman.
Umuman olganda, Kwork platformasida ishlash menga deyarli qiyinchilik tug‘dirmayapti. Faqat bitta masala bor, rus tilini yaxshilab o‘rganishim kerakligini his qilyapman 😅. Ko‘p terminlarni bilmayman, ba’zan oddiy yozishmalarda ham qiynalib qolyapman. Shuning uchun rus tilini ham asta-sekin o‘rganib borishim kerak.
(O‘zbek tilidan tashqari yana 3 ta til bo‘lyapti-a, karl! 😄)
Mijozimning o‘zi ham samimiy va ochiqko‘ngil inson ekan. Suhbat davomida, komplementlar qilib turibdi. To‘g‘risi, ularning budjeti ish hajmiga nisbatan ancha past narxda, lekin men baribir loyihani bajarib beraman deb aytganman. Jarayonlar cho‘zilib ketsa yoki menga minusga ketsa ham, so'zimda turib, ishni oxirigacha yetkazish niyatidaman.
Shu o‘rinda aytishim kerakki, mijozim ham suhbatda: “Ishni tashlab ketasiz deb o‘ylagandim” degandek gapirdi. Endi esa menga ishonch bildirayotgani sezilib, komplement qilib turibdi. Ishqilib, buncha maqtovdan keyin qo‘lim ishga bormay qolmasa bo‘ldi edi 😄
Xulosa qiladigan bo'lsak:
Kishi aytgan gapi va olgan mas’uliyati uchun javob bera olishi kerak.
Agar bunga tayyor bo‘lmasa, “bu ishga aqlim yetmaydi” deb boshqa yo'lni tanlagani afzal. Ishning sifati ham, obro‘si ham shundan boshlanadi.
@suxrobblog » #kwork#frilans#mijoz
#IT_Center#frilans
Bismillah deb frilanserlik faoliyatimizni ham boshlayapmiz
🤝 Eng avvalo keysimizni tumanimizdan boshlashga qaror qildik.
Tuman Istirohat bog'ining SMM xizmatini hech qanday moddiy manfaatlarsiz yuritishni boshladik.
☺️ Hozircha logo brending hamda kanal tayyor bo'ldi. insha'Allah rejalar katta.
SMM'dan xabari bor, media sohasida iqtidorga ega yoshlarni jamoamizga taklif etamiz.
✋ Bizga kerak:
– SMM'chi;
– Grafik dizayner;
– Video-montaj ustasi;
– Mobilograf va yana boshqalar
Havaskor yoshlarni ham qabul qilamiz. Bilganlarimizni o'rgatib, tajriba almashamiz.
🟢IT Center'da kutamiz
*Loyiha hech qanday moddiy manfaatlarni ko'zda tutmaydi!
@yaypanpark🎡#yaypanpark
@ITCenter_Yaypan – tumanimiz rivoji uchun