Что делать если нужно поставить какую-то 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
Hırvatistan’dan gelen kursiyerlerimiz, Keşan’daki Baykar Uçuş Eğitim Merkezi’nde düzenlenen #BayraktarTB2 SİHA eğitimini başarıyla tamamlayarak mezun oldu.
Mezun olan kursiyerlerimizi tebrik ederiz. 🇹🇷🤝🇭🇷
Trainees from Croatia have successfully completed their #BayraktarTB2 UCAV training at the Baykar Flight Training Center in Keşan.
We congratulate our newly graduated trainees. 🇹🇷🤝🇭🇷
https://sosyal.teknofest.app/@baykartech/114993655653054300
Jandarma'nın Yanında, Gökyüzünde 10 Bin Saat! 🇹🇷✈️
Jandarma Genel Komutanlığı envanterinde 10.000 saat boyunca görev yapan J11 (S18) kuyruk numaralı #BayraktarTB2 SİHA’mız emekliye ayrıldı. Terörle mücadeleden sınır güvenliğine, emniyet ve asayişten stratejik altyapıların korunmasına kadar kritik görevlerde gökyüzündeydi.
J60 kuyruk numaralı yeni bir #BayraktarTB2 SİHA'yı Jandarma Genel Komutanlığımıza hediye ettik.
10,000 Hours in the Skies, Serving the Gendarmerie 🇹🇷✈️
The #BayraktarTB2 UCAV with tail number J11 (S18) has been retired after successfully completing 10,000 flight hours in the inventory of the Gendarmerie General Command. From counterterrorism to border security, law enforcement to the protection of strategic infrastructure, it played a vital role in critical missions.
As part of our continued support, we have donated a new #BayraktarTB2 with tail number J60 to the Gendarmerie.
Yılmadan, yorulmadan göklerde 1️⃣.0️⃣0️⃣0️⃣.0️⃣0️⃣0️⃣ saat! 🇹🇷
Tirelessly soaring through the skies for 1️⃣.0️⃣0️⃣0️⃣.0️⃣0️⃣0️⃣ hours! 🇹🇷
#BayraktarTB2✈️🚀
▶️HD Video
Milli Kanatlar Hırvatistan Semalarında! ✈️
Baykar ile Hırvatistan Savunma Bakanlığı arasında #BayraktarTB2 SİHA ihracatını kapsayan tarihi anlaşma Zagreb’de imzalandı. 🇹🇷🇭🇷
Bu anlaşma ile #BayraktarTB2, NATO ve Avrupa Birliği üyesi bir ülkenin daha envanterine girdi.
Hayırlı olsun.
Our Indigenous Wings in the Croatian Skies! ✈️
A historic agreement between Baykar and the Croatian Ministry of Defense for the export of #BayraktarTB2 UCAV was signed in Zagreb. 🇹🇷🇭🇷
With this agreement, #BayraktarTB2 has entered the defense inventory of yet another NATO and EU member state.
Polonya #BayraktarTB2 Sistemi Lojistik Destek Sözleşmesi kapsamında NSPA Genel Direktörü ve Polonya Savunma Bakanlığı temsilcilerinin katılımıyla Özdemir Bayraktar Milli Teknoloji Merkezimizde imza töreni gerçekleştirdik.
🇹🇷🤝🇵🇱
As part of the Poland Bayraktar TB2 System Logistics Support Contract, we held a signing ceremony at the Özdemir Bayraktar National Technology Center with the participation of the NSPA Director General, their accompanying delegation, and representatives from the Polish Ministry of Defense.
10.000 saatlik uçuş süresi ile ömür devrini tamamlayan, TSK envanterindeki S5 kuyruk numaralı #BayraktarTB2 İHA'mız vatani görevini hakkıyla yerine getirdi! 🇹🇷✈️
The Bayraktar TB2 UAV, with tail number S5, which was part of the Turkish military's inventory, has completed its service life after 10,000 flight hours, fulfilling its duty to the nation with distinction! 🇹🇷✈️
▶️HD Video
Dost ve kardeş ülke Kenya’dan gelen kursiyerlerimiz, Keşan’daki Baykar Uçuş Eğitim Merkezi'nde #BayraktarTB2 SİHA eğitimini başarıyla tamamlayarak mezun oldu.
Mezun olan kursiyerlerimizi tebrik ederiz.🇹🇷🤝🇰🇪
Trainees from our friendly and brotherly country, Kenya, have successfully completed their #BayraktarTB2 UCAV training at the Baykar Flight Training Center in Keşan and graduated. ✈️
We congratulate our newly graduated trainees.🇹🇷🤝🇰🇪