Что делать если нужно поставить какую-то 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
🌙#Hashtag’chilarim, ulugʻ ayyom - Qurbon hayiti muborak!
🐑 Keltirilayotgan qurbonliklar dargohida qabul boʻlsin.
✈️ Eng yaxshi tilaklar va albatta, eng yangi gadjetlarni tilab qolaman.
😎Hurmat bilan, JM!
Hammaga salom!
Ha, ancha yo'q bo'lib qoldim, postlar qo'yilmadi, ijod qilinmadi. Sabablar yetarlicha, afsuski.
Kuz fasli oilamiz uchun quvonarli kelib, o'g'il farzandli bo'lgandim. Kuz oxiriga kelib esa Otam bilan bog'liq kutilmagan fojea yuz berib, 29-oktyabrda reanimatsiyaga tushib qoldilar. Allohning irodasi ekan, 46 kunlik og'ir betoblikdan keyin Otam 14-dekabr kuni vafot etdilar...
Shu-shu, dafn marosimlari bilan ovora bo'lib, o'zimning sog'ligim va halovat yo'qligi bois kanalga yangilik joylashtira olmadim. Lekin, hayot davom etarkan. O'zimda kuch to'plab, sekin-asta ishga, ijodga qaytyapman. Shu sabab, sizning qo'llab-quvvatlab turishingiz zarur menga.
Rahmatli Otamni sizlarga keyinroq batafsil tanishtirmasam bo'lmaydi. Chunki ular #Hashtag blogimning qandaydir ma'noda asoschisi ham. 6 yoshligimdan qo'limga "payal'nik" berib, tranzistor-u diodlarni, kondensator va rezistorlarni tanishtirgan, birinchi radio, robotlarimni yasashni o'rgatgan aynan Otam - Bekpo'lat o'g'li Faxriddin!
Adamni ohirati obod bo'lsin, Jannatlarda uchrashish nasib etsin. Duolaringizda eslab qo'ysangiz, sizdan minnatdorman. 🤲🏻
⚠️ Endi 9/11 men uchun yomon sana emas!
🎉 Bu xursandchilikni sizlar bilan bo'lishgim keldi. Bugun oilamizda "kichkina #hashtag" dunyoga keldi, Alhamdulillah.
🤲 InshaAllah yurtimizga, dinimizga xizmat qiladigan o'g'il bo'lsin. "Ayti" bo'yicha bilimi kuchli, sportdayam tengsizlar qatorida bo'lib, O'zbekiston bayrog'ini yuqoriga ko'p marotaba ko'tarishini niyat qildim (orada bayrog'imizni Oyga, Marsga qo'yishini ham o'yladim, to'g'risi 😅)
☺️ Oldindan bildiriladigan tilaklar va tabriklar uchun rahmat, #Hashtag oilasi!
🏆 OKX Bounty Hunt New Season #2🏆
Engage, Refer & Win!
Prize:
- $400 USDT weekly allocation
🥇 $80 | 🥈 $60 | 🥉 $40
4th to 6th - $20
7th to 10th - $15
11th - 20th - $10
How to earn points:
✅ Check In Daily -> GM OKX Fam #OKXBountyHuntNewSeason#2 every day 👉50000
✅ Chat & Engage - Chat actively (30+ characters) 👉30
✅ Invite Friends - 🔗 Tag Admins to get your personal invite link and invite more people to join OKX Announcement👉50
✅ Share your reactions/emojis under the announcement posts
Check points🏆
Bounty points
Bounty ranking
More points!
👉 Share pictures and topics of New Year and crypto with the #hashtag in the chat
Join the event now👇👇👇
OKX Bounty Hunt New Season #2 Form
Our Socials:
⚜️Sign Up on OKX | Join Affiliate | TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
⭐️CN DC | CN TG
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
🏆 OKX Bounty Hunt New Season #1🏆
Engage, Refer & Win!
Prize:
- $400 USDT weekly allocation
🥇 $100 | 🥈 $50 | 🥉 $30
4th to 6th - $20
7th to 10th - $15
11th - 20th - $10
How to earn points:
✅ Check In Daily -> GM OKX Fam #OKXBountyHuntNewSeason#1 every day 👉50000
✅ Chat & Engage - Chat actively (50+ characters) 👉20
✅ Invite Friends - 🔗 Tag Admins to get your personal invite link and invite more people to join OKX Announcement👉50
✅ Inviters earns extra 👉 10 per message sent by the invitee
✅ Share your reactions/emojis under the announcement posts
Check points🏆
Bounty Points
Bounty Ranking
More points!
👉 Share pictures and topics of New Year and crypto with the #hashtag in the chat
Join the event now👇👇👇
OKX Bounty Hunt New Season #1 Form
Our Socials:
⚜️Sign Up on OKX | Join Affiliate | TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
⭐️CN DC | CN TG
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
Chat-Specific Hashtags. Groups and channels can use the new format#hashtag@username for hashtags – which only show posts and stories from the same chat when tapped.
October Features
1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • More