Что делать если нужно поставить какую-то 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
#Israele
Il premier #Netanyahu (#Likud|ECR) ha annunciato di aver revocato il decreto con cui aveva disposto le dimissioni del Ministro della Difesa Yoav #Gallant (#Likud|ECR): “Abbiamo avuto delle divergenze, ma Gallant rimane nella sua posizione.”
@OsservatorioEsteri
#CPI#Israele
La Corte Penale Internazionale ha emesso mandati d'arresto per il Primo Ministro Benjamin #Netanyahu (#Likud|ECR) e l’ex ministro della Difesa Yoav #Gallant (Likud) per crimini di guerra e crimini contro l'umanità.
@OsservatorioEsteri
— 🇮🇱
The International Criminal Court has issued arrest warrants for #Israeli PM Benjamin #Netanyahu and Defense Minister Yoav #Gallant, and for #Hamas leaders, for #WarCrimes and crimes against humanity
IDF MEMBER THREATENS MILITARY COUP IN ISRAEL
"Yair #Netanyahu, Son of Israel PM, just posted, then deleted, this video by a Netanyahu loyalist in #Gaza threatening Defense Minister Yoav #Gallant with a military coup if he did not change tactics to allow an accelerated #genocide
As the war drags on, Israel is being destabilized from within"
Yair Netanyahu left Israel for Florida in March 2023 amid reports he was banned by his father from posting on social media for inflaming tensions in Israel, exacerbating a diplomatic rift with the United States.
IDF soldier:
"We want to KILL THEM ALL.
No one shall remain alive! ...
Either you change tactic, Mr #Gallant (defense minister), and let us kill them all, or we will leave only one prime minister!
Do you want a military #coup?"
IDF soldiers literally threatening Israeli Defense Minister Yoav #Gallant with a military coup if he did not change tactics to allow an accelerated genocide.
#Israel is really no better than some two-bit dictatorship!
#Israele#Gaza#CPI
Secondo quanto riportato da “Channel 14”, il governo #Netanyahu ha avuto le notizia del fatto che nelle prossime settimane verranno emessi mandati di arresto per “crimini contro l’umanità” a carico dei vertici dell’esecutivo e dell’#IDF, incluso il Primo Ministro #Netanyahu (#Likud|ECR) e il Ministro della Difesa Yoav #Gallant (Likud).
Sarebbe questa la ragione alla base della volontà di Bibi di cercare un “accordo dell’ultimo minuto” con #Hamas|Islamisti radicali, sperando nel fatto che una mancata invasione di #Rafah possa scongiurare l’adozione di misure cautelari da parte della Corte Penale Internazionale.
Se un mandato d’arresto dovesse essere emesso nei suoi confronti, Netanyahu diventerebbe il primo leader di governo di uno Stato occidentale a riceverlo. Evento che gli precluderebbe l’ingresso in 128 Stati del mondo, pena l’arresto in loco.
@OsservatorioEsteri
https://x.com/SavinoBalzano/status/1949764393660449003?t=AuMch5bvVrzjWnEbBSbhQg&s=19
Israele è l'unica democrazia del medio oriente e quanto si dice in giro è solo frutto della propaganda di #Hamas.
Ah, no.
Il ministro israeliano della Difesa Yoav #Gallant ha annunciato che #Gaza avrebbe ricevuto "niente elettricità, niente cibo, niente acqua, niente carburante".
Il ministro degli esteri #Katz ha detto: "aiuti umanitari a Gaza? Non si accenderà nessun interruttore elettrico, non verrà aperto nessun idrante".
Avi #Dichter, ministro dell'agricoltura, ha definito l'azione militare di #Israele la "#Nakba di Gaza 2023".
Revital "Tally" #Gotliv, una parlamentare del #Likud, ha postato sul suo account social: "abbattete gli edifici!! Bombardate senza distinzione!! (...) Spianate Gaza senza pietà! Questa volta non c'è spazio per la pietà".
Amihai #Eliyahu, il ministro per il patrimonio, ha indicato l'uso delle armi atomiche su Gaza "come una delle opzioni".
*
Citazioni tratte da C. Hedges, "Un genocidio annunciato", Fazi Editore, 2025.
P.s. prima che qualche automa me lo domandi: si, anche le immagini del 7 ottobre sono disgustose. La colpa di quel disastro è da imputare ad Hamas. Però uno sguardo alla Direttiva Annibale lo darei, se fossi in voi.
https://x.com/SavinoBalzano/status/1949764393660449003?t=AuMch5bvVrzjWnEbBSbhQg&s=19
Israele è l'unica democrazia del medio oriente e quanto si dice in giro è solo frutto della propaganda di #Hamas.
Ah, no.
Il ministro israeliano della Difesa Yoav #Gallant ha annunciato che #Gaza avrebbe ricevuto "niente elettricità, niente cibo, niente acqua, niente carburante".
Il ministro degli esteri #Katz ha detto: "aiuti umanitari a Gaza? Non si accenderà nessun interruttore elettrico, non verrà aperto nessun idrante".
Avi #Dichter, ministro dell'agricoltura, ha definito l'azione militare di #Israele la "#Nakba di Gaza 2023".
Revital "Tally" #Gotliv, una parlamentare del #Likud, ha postato sul suo account social: "abbattete gli edifici!! Bombardate senza distinzione!! (...) Spianate Gaza senza pietà! Questa volta non c'è spazio per la pietà".
Amihai #Eliyahu, il ministro per il patrimonio, ha indicato l'uso delle armi atomiche su Gaza "come una delle opzioni".
*
Citazioni tratte da C. Hedges, "Un genocidio annunciato", Fazi Editore, 2025.
P.s. prima che qualche automa me lo domandi: si, anche le immagini del 7 ottobre sono disgustose. La colpa di quel disastro è da imputare ad Hamas. Però uno sguardo alla Direttiva Annibale lo darei, se fossi in voi.