Что делать если нужно поставить какую-то 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
🤖 Для Compose Material3 Adaptive добавили поддержку каноничных layout на основе библиотеке Navigation 3. Пока вышла первая альфа версия, но уже можно начинать работать. Подробности в анонсе
#compose#navigation
Axborot izlash jarayonida foydalanuvchi ehtiyojlari dinamik va doimiy o‘zgaradi
Foydalanuvchilar onlayn ma’lumot izlayotganda, ularning ehtiyojlari ko‘pincha o‘zgarib boradi. Dastlab foydalanuvchi aniq savol yoki maqsadga ega bo‘lishi mumkin, lekin sayt yoki ilovani ko‘rib chiqarkan, yangi ma’lumotlar ularning tushuncha va maqsadlarini o‘zgartirishi mumkin. Shu sababli onlayn ma’lumot izlash jarayoni foydalanuvchi va tizim o‘rtasidagi doimiy “muzokara”ga o‘xshaydi.
Dizaynerlar bu jarayonni hisobga olishlari kerak. Foydalanuvchi faqat bitta, to‘g‘ridan-to‘g‘ri yo‘l bilan maqsadiga yetadi deb o‘ylash noto‘g‘ri. Buning o‘rniga, moslashuvchan navigatsiya tizimlarini yaratish lozim, ular turli kirish nuqtalari va yo‘llarni qo‘llab-quvvatlasin.
Masalan, foydalanuvchi:
- qidiruv tizimida chiqqan sahifaga olib boruvchi (deep link) orqali saytda kirishi,
- bosh sahifaga kirib ko‘rishi,
- kalit so‘z bo‘yicha qidiruv qilishi,
- turli bo‘limlarni o‘rganishi mumkin.
Samarali navigatsiya ushbu turli xatti-harakatlarni qo‘llab-quvvatlashi va foydalanuvchi ehtiyojlariga moslashishi kerak.
Shuningdek, foydalanuvchining vaqtini optimallashtirishni ham yodda tutish muhim. Barcha navigatsiya variantlarini bir vaqtning o‘zida ko‘rsatish foydalanuvchini chalg‘itishi mumkin. Shuning uchun, eng muhim linklar va funksiyalarni asosiy foydalanuvchi turlari va asosiy vazifalarga qarab ustuvor qilish tavsiya etiladi.
@uxceluz
#UX#Navigation
👋Приветствую, товарищи мои!
I'm having some health issues🤒🍂 Wish me soon recovery, please!
Will be back asap!
✈️ In the comments you'll find navigation to the channel, just in case you miss learning Russian with me.
📎 Oh, and one more thing: if you'd like to join our RCRussian chat (with audios 🎧🗣👇 where you can also ask questions about Russian, Russia, or just chat), and you're not here to sell crypto, run scams, or solicit clients for shady businesses, let me know by contacting our bot @RCR_feedback_bot.
Natalie😀💓
#admins_letter
#navigation
Hi, товарищи мои!
🔻You noticed the channel has been a bit silent recently. I'm having some issues🤒 and not able to post daily.
🔻Please understand, 🤗 and forgive! Don't disappear into the vastness of the internet without a trace – I've memorized all your names (just kidding!).
🔻It's fun here sometimes, and always useful for learning Russian.
I'll be back to my regular posting schedule in the near future asap.
• Вы и глазом не успеете моргнуть!
[vy i gla-zam ni us-pe-yi-te mar-gnut']
You won't even have time to blink!
Обняла! Приподняла! Покружила! Поставила на место!
📎 In the comments you'll find navigation to the channel, just in case you haven't checked all my posts😉.
📎 Oh, and one more thing: if you'd like to join our RCRussian chat (with audios 🎧🗣👇 where you can also ask questions about Russian, Russia, or just chat), and you're not here to sell crypto, run scams, or solicit clients for shady businesses, let me know by contacting our bot @RCR_feedback_bot and I'll send you the link😉.
Natalie❤️
#admins_letter
#navigation
🌎 Each autumn, millions of common chaffinches migrate from northern Europe to Mediterranean regions, sometimes flying over 3,000 kilometers in search of warmer climates. These small songbirds rely on internal magnetic sense and visual landmarks to guide their journeys. ✨
#birds⚡#migration⚡#navigation
👉subscribe Interesting Planet
👉more Channels
Совершенно обалденный пост, в котором по шагам разбирается работа GPS. Вы только взгляните на все эти интерактивные визуализации. Страшно становится, когда прикидываю, сколько в один этот пост было вложено труда. Ну и GPS, конечно, теперь ещё более внушительной штукой выглядит.
#gps#navigation
The open-source mobile app Organic Maps is used by millions of people on both the Android and iOS platforms. In addition to featuring offline maps (generated from OpenStreetMap cartography) and turn-by-turn navigation, it also promises its users greater privacy than proprietary options. However, controversial decisions taken by the project's leaders, feelings of disenfranchisement among contributors, and even accusations of embezzlement have precipitated a divide in the community, leading to a new fork called CoMaps.
Hike, Bike, Drive Offline Navigate with Privacy | CoMaps
https://www.comaps.app/
#Navigation#Maps
📹Разбор Jetpack Navigation 3 - настоящая навигация для Compose (21 мин)
Месяц назад Google анонсировала навигацию специально разработанную под Compose и которая должна решить все боли. В видео показываю её возможности, делюсь своим мнение и рассказываю про недочеты, которые надеюсь что решат до стабильного релиза
#AndroidBroadcast#navigation#jetpack#compose
🌍 The highest possible latitude is 90°, found only at the North and South Poles. Longitude, measured east or west, wraps fully around Earth—reaching up to 180° in either direction. ✨
#coordinates⚡#mapping⚡#navigation⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Some ancient Polynesian maps were made with sticks and shells, showing ocean swells and island positions. These unique charts helped navigators cross vast distances without modern tools. ✨
#cartography⚡#navigation⚡#history⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🚀Релиз Jetpack Navigation 2.9.0
🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API
#jetpack#jetpackupdate#navigation#compose#kmp