Что делать если нужно поставить какую-то 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
#Congratulations
🧡 Nargis Kosimova, Director of the “Ekolog” Public Association, has been awarded the “Mo‘tabar Ayol” badge
In accordance with the Decree of the President of the Republic of Uzbekistan dated February 2, 2018, No. PF-5325, “On measures to fundamentally improve activities in the field of supporting women and strengthening the family institution,” the “Mo‘tabar Ayol” badge was established.
This award is given to women who have shown activity and initiative in public and state life, contributed through their effective work to the stability and prosperity of families, the protection of motherhood and childhood, and have set an exemplary example in raising healthy and well-rounded generations in the spirit of patriotism and loyalty to the ideals of independence, promoting moral and ethical values locally, and broadly spreading national values.
The “Mo‘tabar Ayol” badge is presented by the Women’s Committee of Uzbekistan on the eve of International Women’s Day, March 8.
🌿 The team of the “Ekolog” Public Association sincerely congratulates Nargis Kosimova on receiving this prestigious award!
☘️Read the latest environmental news on the @ekologuz page. Follow us and send your suggestions and wishes via @eklguz_bot
Instagram | Facebook | Twitter | Sayt | Youtube.
#Congratulations🥳
"Nikhil" for your amazing kabaddi skills and to be the luckiest winner of our coin-toss representative.🥳
Keep going, abhi to leaderboard baki hai😜
.
.
.
Download App👇
https://vision11.in/APK/vision11.apk
Congratulations to the fourteen train driver trainees who have successfully completed their training!
January 24, 2024(EDR); During their one year training period, the trainees have successfully finished their theoretical and practical training. That provided by the Ethiopian-Djibouti Railway Capacity Building program’s fourth round.
Today, they took their Ministry of Transport and Logistics qualification exam, and now one step closer to obtaining their licenses and starting their careers as train drivers.
We are incredibly proud of their hard work and commitment, and we wish them all the best in their future endeavors!
#EthiopiaDjiboutiRailway#EthiopiajiboutiRailwayfamily#CapacityBuilding #TrainDriverTraining#Congratulations
The D-Day on #vision11 is here! 🏆
Here are our top 3 winners for #PKL2022 Leaderboard contest!🎖
#Congratulations to all of you!🎉
Aap bhi ho sakte ho agle winner, abhi #vision11 download karo aur khelo 100+ contests to win big!💯
.
.
.
Download App👇
https://vision11.in/APK/vision11.apk
PAID.
#CONGRATULATIONS🎉🎉
#INVEST AND #EARN
PAYING NOW......
(Via USDT, BYBIT)
INSHA'ALLAH 😍
Please check and reconfirm from your Crypto wallet Balance.
Don't forget to share your feedback as soon you got your profit everyone
#Invest & #Earn
Matbuot va ommaviy axborot vositalari xodimlari kuni muborak boʻlsin!
Hurmatli ommaviy axborot vositalari xodimlari, sizlarni "27-iyun – Matbuot va ommaviy axborot vositalari xodimlari kuni” munosabati bilan tabriklaymiz.
Ushbu quvonchli ayyomda barchangizga sihat-salomatlik, sharafli faoliyatingizda yangi yutuq va omadlar, xonadoningizga tinchlik va fayzu baraka tilaymiz.
Kasb bayramingiz muborak boʻlsin!
Hurmat bilan,
“Yangi Oʻzbekiston” universiteti jamoasi
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#Press#congratulations#Tabrik
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook