Что делать если нужно поставить какую-то 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
Uno sguardo alle elezioni di ieri in #Sassonia e #Brandeburgo. Imponente avanzamento della destra nazionalista (#AfD) in entrambi i casi.
A causa dell'estrema demonizzazione di questo partito da parte di quelli mainstream, però, è improbabile che AfD riesca ad andare al governo
https://x.com/SavinoBalzano/status/1830908103950238155?t=aqBdSQJcukpGPZmf9IHHwg&s=19
Secondo #Gentiloni le recenti #elezioni in #Germania, con i risultati storici di cui tutti sappiamo in #Turingia e in #Sassonia, consacrerebbero la vittoria del «rancore contro tutto e tutti».
Vorrei ragionarci un attimo, non prima però di socializzarvi un fatto che ho notato: di queste elezioni non si parla già quasi più. Persino i telegiornali più sensibili alle vicende internazionali preferiscono dare maggior risalto ad altro, spesso alla cronaca nera. Eppure questo risultato è stato narrato come il ritorno del nazismo tedesco: si, insomma, secondo voi, cosa dovrebbe far più notizia del ritorno del nazismo (in Germania!)? Strano che non se ne parli già più. Ma lasciamo perdere: solite elucubrazioni complottiste.
Concordo in parte con quello che ha scritto il Commissario europeo: ha vinto il rancore. Solo non contro tutti, bensì contro quelli come lui.
Queste elezioni tedesche hanno visto la vittoria dei moderati, non degli estremisti: cosa c'è di più estremista del volere la guerra contro la Russia? dell'accettare e anzi alimentare il rischio della deflagrazione totale? dell'accettare che gli #StatiUniti montino una farsa per spezzare il naturale rapporto tra #Europa e #Russia? dell'accettare che tale strategia si ripercuota principalmente sui tedeschi? Questi ultimi sono infatti quelli che pagano economicamente il prezzo più alto, soprattutto dopo il sabotaggio del #NordStream2. Ricordiamo che venne annunciato da #Biden - anch'egli, come alcune notizie, stranamente scomparso - in una conferenza stampa precedente alla guerra, alla presenza dello stesso #Scholz, che non mosse un dito nonostante presagisse chiaramente il disastro tedesco. Immaginate: si preannunciava pubblicamente, alla presenza del Cancelliere, dinanzi al popolo tedesco, che sarebbe stata inferta una ferita mortale alla Germania e quello non si sentì in dovere di dire o fare assolutamente nulla: non vi sembra un atteggiamento "estremo"? A me pare estremismo puro: estremamente servile, tradimento estremo, come lo possiamo definire?
Non ritenete sia estremo insistere nel voler dare all'#Ucraina armi da impiegare in territorio russo nonostante non abbia alcuna possibilità di vincere e invece la certezza di spezzare altre centinaia di migliaia di giovani vite? Non credete che questa strada comporti danni economici gravissimi a tutta l'Europa, soprattutto a carico della parte più fragile della popolazione europea? Non vi pare un espediente "estremo", soprattutto se impiegato mentre si continuano a ignorare solo le responsabilità della #NATO a trazione statunitense? E quale avrebbe dovuto essere la reazione del popolo tedesco? Perché essa avrebbe dovuto differire da quella registrata in occaisione delle elezioni europee o francesi, a dispetto di come sono state raccontate? Non pare un caso che questo risultato sia stato conseguito proprio nella parte orientale del paese, la più fragile, quella letteralmente colonizzata dall'occidentale. Perché #PaoloGentiloni non prova a ragionarci pubblicamente?
Ancora, i #verdi, la forza politica più ipocrita e bellicista della Germania, sono stati spazzati via: le assurde politiche sul #green non hanno nulla a che vedere col rischio di chusura di stabilimenti della #Volkswagen? Questo ovviamente Gentiloni non lo può enfatizzare, dal momento che in qualità di Commissario europeo ha delle enormi responsabilità circa il delirio ecologista che infuria e impazza.
Di fondo, poi, si nota ancora una volta la concezione della #democrazia che viene alimenta e la nota citazione di #Churchill deve essere necessariamente arricchita: «la democrazia è la peggior forma di governo, eccezion fatta per tutte le altre forme che si sono sperimentate finora [sempre che a vincere siano gli amici di Gentiloni & Co]».
(...)
CONTINUA SU X