Что делать если нужно поставить какую-то 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
✨ Iliq kutib olishdan boshlab, silliq parvozgacha — Flyone Asia bilan osmonda qulaylikni his eting 🛫🍽️#FlyoneAsia#QulayParvoz
_
✨ From warm welcomes to smooth takeoff — experience comfort in the sky with Flyone Asia 🛫🍽️#FlyoneAsia#FlyWithComfort
⸻
✨ От тёплого приветствия до плавного взлёта — почувствуйте комфорт в небе с Flyone Asia 🛫🍽️#FlyoneAsia#ЛетайСКомфортом
Знакомьтесь с нашей потрясающей командой ✈️ Всегда готовы встретить вас с улыбкой и сделать ваше путешествие незабываемым.❤️
Bizning ajoyib ekipajimiz bilan tanishing ✈️ Sizni har doim tabassum bilan kutib olib, sayohatingizni unutilmas qiladi.❤️
Meet our amazing crew ✈️ Always ready to welcome you on board with a smile and make your journey unforgettable.❤️
#ЛетайУмноСFlyOne#FlyOneBilanUch#FlyOneAsia#crewmember#aviation
🌏✈️Представляем FlyOne Asia — Ваши новые крылья в небе!
Добро пожаловать на борт новой силы в азиатской авиации!
В FlyOne Asia мы не просто летаем — мы соединяем людей, культуры и мечты по всему континенту и за его пределами. Безопасность, комфорт и инновации — наша основа. Мы меняем представление о перелётах.
🛫 Современный флот
🌐 Расширяющаяся маршрутная сеть
✨ Обслуживание мирового класса
📍Подписывайтесь и станьте частью нашего путешествия — к более яркому и смелому небу.
#FlyOneAsia#НовыеГоризонты#ПосадкаНачалась#ЛетайУмноСFlyOne
________________________________
🌏✈️FlyOne Asia bilan tanishing — Osmoningizdagi yangi qanotlar!
Osiyodagi aviatsiyaning yangi davriga xush kelibsiz!
FlyOne Asia nafaqat samolyot uchiradi — biz insonlarni, madaniyatlarni va orzularni bog‘laymiz. Xavfsizlik, qulaylik va innovatsiyalar bizning asosimiz. Biz parvozni yangi darajaga olib chiqamiz.
🛫 Zamonaviy samolyotlar parki
🌐 Kengayib borayotgan yo‘nalishlar
✨ Yuqori darajadagi xizmat
📍Biz bilan kuzatib boring va yorqinroq, jasurroq osmon sari parvozimizning bir qismiga aylaning.
#FlyOneAsia#YangiUfqlar#Ro‘yxatdanO‘ting #FlyOneBilanUch
________________
🌏✈️FlyOne Asia bi
🌏✈️Introducing FlyOne Asia — Your New Wings Across the Skies!
Welcome aboard the newest force in Asian aviation!
At FlyOne Asia, we’re not just flying planes — we’re connecting people, cultures, and dreams across the continent and beyond. With safety, comfort, and innovation at our core, we’re here to redefine the way you experience air travel.
🛫 Modern Fleet
🌐 Expanding Destinations
💙 Affordable Fares
✨ World-Class Service
📍Follow us and be part of our journey as we take off to a brighter, bolder sky.
#FlyOneAsia#NewHorizons#NowBoarding#FlySmartFlyOne
✨ Большие новости от Flyone Asia! ✨
Наш путь к новым высотам продолжается — мы с гордостью объявляем о пополнении нашего флота двумя новыми самолетами. Этот важный шаг позволит нам расширить горизонты, открыть больше направлений и сделать ваши путешествия еще более комфортными. 🌍💙
Каждый новый самолет — это не просто крылья, это символ роста, надежности и нашей приверженности соединять людей и города по всему миру.
Спасибо, что выбираете Flyone Asia. Вместе мы строим будущее авиации в нашем регионе. 🚀✈️
#FlyoneAsia#Авиация#НовыйФлот#БудущееПутешествий
_______________________________________
✨ Flyone Asia’dan katta yangilik! ✨
Biz yangi cho‘qqilar sari yo‘limizni davom ettirmoqdamiz va mamnuniyat bilan e’lon qilamiz — flotimizga yana ikki yangi samolyot qo‘shildi! Bu muhim qadam bizga ko‘proq yo‘nalishlarni ochish, qulaylikni oshirish va yo‘lovchilarimiz uchun yanada yaxshi sayohat tajribasi yaratish imkonini beradi. 🌍💙
Har bir yangi samolyot — bu shunchaki qanot emas, bu bizning o‘sishimiz, ishonchliligimiz va odamlarni hamda shaharlarni birlashtirishga bo‘lgan sadoqatimiz ramzidir.
Flyone Asia’ni tanlaganingiz uchun tashakkur. Birgalikda biz mintaqamizda aviatsiyaning kelajagini qurmoqdamiz. 🚀✈️
#FlyoneAsia#Aviatsiya#YangiFlot#SayohatKelajagi
_____________________________________
✨ Big news from Flyone Asia! ✨
Our journey continues to reach new heights as we proudly welcome two brand-new aircraft into our fleet. This important step allows us to expand our horizons, offer more destinations, and create an even more comfortable travel experience for our passengers. 🌍💙
Every new aircraft represents more than just wings — it symbolizes growth, reliability, and our commitment to connecting people and places across the world.
Thank you for choosing to fly with us. Together, we’re building the future of aviation in the region. 🚀✈️
#FlyoneAsia#Aviation#NewFleet#FutureOfTravel
From Medina to Tashkent — their journey was
more than just a flight. Hear what our passengers have to say about flying with FlyOne Asia * Real voices. Real smiles. Real comfort.
#FlyOneAsia#PassengerStories#MedinaToTashkent#FlyWithConfidence.
Из Медины в Ташкент - их путешествие было больше, чем просто перелёт. Послушайте, что наши пассажиры говорят о полёте с FlyOne Asia # C Настоящие голоса. Искренние улыбки. Настоящий комфорт.
#FlyOneAsia#ИсторииПассажиров#МединаТашкент
#ЛетайСУверенностью
Madinadan Toshkentga - ularning sayohati oddiy parvozdan ham ortiq edi. FlyOne Asia bilan uchish haqida yo'lovchilarimizning fikrlarini eshiting #
Haqiqiy ovozlar. Chin yurakdan tabassumlar. Yuksak qulaylik.
#FlyOneAsia#Yo'lovchiHikoyalari #MedinadanToshkentga#IshonchBilanUch