Что делать если нужно поставить какую-то 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
⌛️#accaddeoggi⏳
8 Agosto 1956: Scoppia un incendio nella miniera belga di Marcinelle. Morirono 262 persone, di cui 136 italiani. L'evento, causato da un incendio che in breve tempo riempì di fumo l'intero impianto di areazione, fu uno dei peggiori disastri minerari di sempre e il terzo, in ordine di vittime, per quanto riguarda gli immigrati italiani all'estero.
📌 Accadeva anche...
🏛 LaNostraStoria
⌛️#accaddeoggi⏳
14 Maggio 1955: Viene siglato il Patto di Varsavia tra Unione Sovietica, Ungheria, Romania, Polonia, Germania dell’Est, Cecoslovacchia, Bulgaria, Albania. Il nome esteso del patto era “Trattato di amicizia, cooperazione e mutua assistenza” e di fatto venne concepito come l’antitesi della NATO, dalla quale l’URSS era stata rifiutata, e nella quale, non a caso, la Germania dell’Ovest era entrata solo una settimana prima. Il mondo venne a trovarsi così diviso in due blocchi ostili.
Il Patto fu costituito da undici articoli ma quello fondamentale, per la storia degli anni successivi, fu il quarto che imponeva la reciproca difesa e la mobilitazione degli eserciti dei singoli alleati in caso di aggressione a uno dei paesi aderenti. Questa alleanza durò per 36 anni. Il Patto di Varsavia venne sciolto nel 1991 a Praga e successivamente quasi tutti i paesi ex membri fecero il loro ingresso nella NATO.
📌 Accadeva anche...
🏛 LaNostraStoria
⌛️#accaddeoggi⏳
7 Maggio 1945: La Germania, rappresentata dal generale Jodl, firma con gli alleati a Reims la resa incondizionata del Reich. Questa entrò in vigore il giorno successivo ma, per volere di Stalin, venne firmata una seconda resa la sera dell'8 maggio, già il 9 nell'orario di Mosca. Per questo motivo la Russia riconosce da allora il 9 maggio come giornata della Vittoria.
📌 Accadeva anche...
🏛 LaNostraStoria
San Patrizio non è solo trifogli, cappellini verdi e birra .
È anche storia, rivolta, sangue versato per l’identità di un popolo.
Oggi, giorno in cui l’Irlanda viene celebrata nel mondo, vi portiamo davanti alla tomba di Bobby Sands a Milltown Cemetery, Belfast.
Un ragazzo di 27 anni che ha scelto di morire per difendere la libertà di un popolo intero.
La lotta non è finita con lui nel 1981.
Vive ancora in ogni pietra, in ogni ricordo.
Buon Lá Fhéile Pádraig, ma ricordate: l’Irlanda vera porta anche cicatrici. 🇮🇪
#irlanda#accaddeoggi#storia#politica#notizie
Ci sono pagine di storia poco raccontate perché parlano di persone comuni.
Di case rubate.Di notti interrotte. Di vite spezzate nel silenzio.
Tra il 1943 e il 1947 migliaia di italiani dell’Istria, di Fiume e della Dalmazia furono portati via così: senza spiegazioni, senza ritorno.
Molti vennero gettati nelle foibe.
Senza un nome. Senza una tomba.
E chi sopravvisse fu costretto a lasciare tutto: la propria terra, i ricordi, l’identità.
Oltre 250.000 persone in fuga con una valigia piena di assenze.
E all’arrivo, spesso, insulti e diffidenza.
Per troppo tempo questa storia è stata ignorata.
Ma il dolore non sparisce se lo cancelli.
#italia#storia#foibe#accaddeoggi#storiaitaliana
Pasqua non è solo resurrezione, è trasformazione.
Nel caos di oggi, il vero cambiamento è interiore: restare lucidi, consapevoli e umani.
Rinascere non è tornare come prima, è diventare qualcosa di nuovo.
#accaddeoggi#storia#pasqua#cristianesimo#notizie
L’Inno d’Italia non è “vecchio”, non è “retorico” e non è “fa*cista”.
È semplicemente più serio di noi.
Il 10 dicembre 1847 è nato un Paese che ancora non c’era.
La domanda oggi è: siamo ancora all’altezza di quelle parole?
Scrivilo nei commenti👇🇮🇹
Tu lo senti ancora tuo?
#accaddeoggi#storia#italia#roma#milano#governo#oggi#fatti#avvenimenti#storico#politica#politicaitaliana#destra
Film per Halloween? Non solo paura.
“L’Esorcismo di Emily Rose” è un viaggio tra fede e scienza, tra luce e ombra.
Un processo alla verità dove il demone non è solo un mostro da scacciare… ma qualcosa (o qualcuno) che vive dentro di noi.
Ispirato a una storia vera, questo film ci costringe a guardare negli occhi ciò che non vogliamo vedere: la sottile linea tra mente e mistero, tra Bene e Male.
E se i demoni non ci possedessero… ma fossimo noi a dar loro forma?
Questo Halloween, più che spaventarti, prova a riflettere.
Il vero orrore, forse a volte, è conoscere se stessi.
#halloween#halloween2025#horror#film#cinema#cinemahorror#accaddeoggi#oggi#occulto
Diciott’anni e un ideale.
Oggi abbiamo tutto, ma non crediamo più in niente.
Sergio Bresciani non giocava a fare l’uomo:
Lo era davvero.
#storia#accaddeoggi#guerra#politica#italia#storiaitaliana#oggi#fatti#eventistorici#eventi#accadevaoggi#ricorrenze#ricorrenza