Что делать если нужно поставить какую-то 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
https://x.com/SavinoBalzano/status/1914232329674932584?t=Ux_tMYpaJcIBhxvlP3rJJg&s=19
Si spegne una voce importante contro la #guerra.
#Francesco ha denunciato le ipocrisie del conflitto in #Ucraina e la vergogna del genocidio a #Gaza.
Per me, questo vale più di ogni altra cosa.
La sua voce era preziosa, soprattutto in questo momento storico.
Che il Signore non ci privi del messaggio di #pace che la Chiesa è chiamata a diffondere nel mondo.
#Elezioni#Vaticano#Conclave
Fumata bianca, è stato eletto un nuovo papa per succedere a Papa #Francesco. Tra diversi minuti ci sarà la proclamazione e conosceremo la sua identità ed il suo nome pontificale.
@OsservatorioEsteri
https://x.com/SavinoBalzano/status/1914951477677740473?t=iL-t8wAf_UghSqI3_s_fxQ&s=19
Ieri sera Travaglio ha detto praticamente tutto su questo teatrino triste, sconfortante, paradossale.
L’ipocrisia di chi si straccia le vesti per poi fingere di affogare nelle proprie lacrime è davvero insopportabile.
Di #Francesco, in ore e ore di diretta televisiva, si ricordano solo gli aspetti più irrilevanti: a che ora si svegliava la mattina, quali biscotti mangiasse, quante volte andava a far visita alla cugina. Ore e ore di testimonianze inutili.
Ieri sera, a cena, scherzavo con alcuni parenti chiedendomi se prima o poi intervisteranno qualcuno anche sulla sua regolarità intestinale. Ci arriveremo a qualcosa di simile, ne sono certo.
Gli elementi rivoluzionari del suo pontificato vengono deliberatamente ignorati, nascosti sotto il tappeto: metterli in luce significherebbe gettare nell’ombra - anzi, nel buio totale - i nani che ballano attorno alla sua salma. Nani perlopiù politici, giornalisti e opinionisti.
Ieri mattina, il direttore di un volantino che per fortuna non legge nessuno (e che non cito per non rischiare di decuplicarne i lettori), non è riuscito a contenere il proprio livore nei confronti del #Papa: lo ha dipinto come antioccidentale, addirittura ostile all’#Europa.
Solo perché non sposava le logiche della violenza, della #guerra, dell’odio.
È un ragionamento ridicolo: essere critici verso l’Unione Europea sul tema del riarmo, ad esempio, è proprio il modo migliore per dimostrare amore verso gli europei, soprattutto verso i più deboli, quelli che rischiano di restare indietro.
Non esiste un’unica idea legittima di Occidente e di Europa: alla maggioranza delle persone, infatti, ripugna la vostra idea di #Occidente e di Europa. È una cosa un tantino diversa.
Ma si sa, i "democratici" di oggi non amano troppo le alternative, né il confronto: la #democrazia è bella solo se si fa quello che dicono loro. E quello che dicono loro, quasi sempre, per noi è una fregatura.
https://x.com/SavinoBalzano/status/1915351670373970045?t=ksGxhdk79z3nM4bMP7mmOw&s=19
Può sembrare una domanda contorta, ma oggi me lo chiedo: chi è più ipocrita dell’ipocrita che accusa gli altri di ipocrisia?
E a vincere il primo premio è proprio Elly.
Questo, in sostanza, il messaggio lanciato ieri in aula da #Schlein: accusa gli altri di predicare bene e razzolare male, di commemorare #Francesco dopo aver fatto tutt’altro.
Lei, che guida l’unico partito italiano - oltre a #ForzaItalia - ad aver votato l’assurda risoluzione europea di inizio aprile, nella quale si affermava:
«la scelta del regime russo di minare l'ordine internazionale basato su regole e l'architettura di sicurezza dell'Europa e di dichiarare guerra ai paesi europei o di cercare di destabilizzarli al fine di realizzare la sua visione imperialista del mondo, rappresentano la minaccia più grave e senza precedenti per la pace nel mondo (...). L'Ucraina deve essere dotata delle capacità militari necessarie per tutto il tempo che le servirà per riportare una vittoria militare decisiva (...)».
E ovviamente, non poteva mancare il riferimento alla comunità #LGBT, sottolineando la vicinanza del defunto #Papa, ma "dimenticando" certe sue frasi: quando parlava di «frociaggine», quando invitava le suore a essere «madri, non zitellone», o quando criticava quelle «brutte, con la faccia di aceto». Poi ci ha buttato in mezzo l'#antifascismo, che in prissimità del 25 aprile ci sta da Dio, appunto.
Frasi scomode, quelle sottaciute, certo. Assolutamente irriverenti. Ma, a loro modo, significative. Utili a scuotere un conflitto dialettico e intellettuale che questa politica - questa "politichetta" - non è in grado nemmeno di concepire.
La Schlein è arrivata a citare persino parte dell’omelia di Pasqua. Quella che le conveniva. E allora mi chiedo: la condotta del suo partito è compatibile con queste parole?
"Nessuna pace è possibile senza un vero disarmo! L’esigenza che ogni popolo ha di provvedere alla propria difesa non può trasformarsi in una corsa generale al riarmo. (...) Faccio appello a tutti quanti nel mondo hanno responsabilità politiche a non cedere alla logica della paura che chiude, ma a usare le risorse a disposizione per aiutare i bisognosi, combattere la fame e favorire iniziative che promuovano lo sviluppo. Sono queste le “armi” della pace: quelle che costruiscono il futuro, invece di seminare morte!"
E questo senza nemmeno voler ricordare - lo accenno soltanto - che la peggiore macelleria sociale in questo Paese è stata messa in atto proprio dai governi guidati (o sostenuti) dal #PartitoDemocratico: Monti, Letta, Renzi, Gentiloni, Draghi.
L’ipocrisia di questi giorni davvero provoca conati. Ma quando gli ipocriti per eccellenza si ergono a maestrini, allora sì, c’è solo da svenire.
https://x.com/SavinoBalzano/status/1893719608701731225?t=cK2p3X1eNewJiM68qdoROg&s=19
In queste ore non ho potuto fare a meno di pensare a #Francesco con gratitudine. Immagino quello che alcuni potrebbero rispondere e citare: non c'è bisogno, credetemi, lo so da me.
Vorrei ricordare con voi un posizionamento in particolare di #PapaFrancesco, quello sulla #guerra e vorrei rammentare a tutti noi un fatto.
Quando infuriava il vento gelido della propaganda, quando si diceva che criticare la politica bellicista di #Biden e dell'#UE fosse da criminali putiniani, chi aveva il coraggio, a certi livelli, di spezzare quella squallida narrazione?
A me è capitato spessissimo di citare Francesco in questi anni. Ho letteralmente perso il conto di quante volte ho scritto o ricordato in radio o in tv la famosa frase del #Papa che ricordava «l'abbaiare della #Nato alla porta della #Russia».
Mi è stato di enorme aiuto: la quasi totalità della stampa e dell'informazione era meschinamente asservita alla narrazione della guerra di civiltà tra bene e male. Chiunque sollevava dubbi era automaticamente ostracizzato, disegnato con contorni mostruosi.
Le parole del Papa hanno rappresentato uno scudo inespugnabile: bastava ricordare le sue frasi per provare immediatamente un qualche conforto.
Sarebbe un gravissimo errore tacere il fatto che il mantello di Francesco ci ha fornito riparo, quando eravamo soli, quando ci lanciavano pietre e sputi.
È sempre stato Papa Francesco a porre un interrogativo di cui nessuno voleva sentir parlare: lui a domandarsi se quello di #Gaza dovesse essere considerato un #genocidio. È stato sempre lui a ricordare che «sono stati bombardati i bambini» e che ciò testimoniva il fatto che quanto vissuto fosse «crudeltà, non guerra».
Io posso solo testimoniare quanto vivo, quanto provo, e se decido di raccontarlo sento il dovere morale di farlo con la massima onestà: sono grato a Francesco per avermi offerto un appiglio e per aver garantito una legittimazione a certe posizioni che senza di lui avrebbero faticato enormemente di più.
Vivo con apprensione queste ore, con dolore e profonda malinconia, prego per il Papa e spero di vederlo tornare.