Что делать если нужно поставить какую-то 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
Venerdì Viktor Khoroshavtsev, ex membro del Consiglio federale russo (cioè il Senato) e dirigente nel settore petrolifero, è stato rilasciato dalla Corte di appello di Milano dopo che giovedì mattina era stato arrestato in un albergo di Somma Lombardo, vicino all’aeroporto di Malpensa, in esecuzione di un mandato di arresto internazionale emesso lo scorso maggio dalla #Russia. (ilPost)
@UltimoraPolitics24
The 33rd Ukrainian drone was shot down on approach to Moscow. This is the most massive attack on the capital in a long time.
#Russia
Original Post
Follow TRN👈
#Russia
Alla Duma russa hanno votato a favore dell’annessione delle regioni ucraine 413 deputati su 408 presenti. I votanti sono quindi superiori ai presenti.
@UltimoraPolitics
#Russia: Il Vicedirettore dell’intelligence militare russa, il Vice Generale Vladimir Alekseyev, è stato ferito da diversi colpi d’arma da fuoco mentre si trovava a Mosca.
Alekseyev, che ricopre la posizione dal 2011, è stato ricoverato in ospedale.
Non si hanno notizie su chi sia l’aggressore.
#Russia: La Russia avrebbe utilizzato un missile Oreshnik contro l'Ucraina nei bombardamenti che sono avvenuti durante la notte. Si tratta di un missile balistico a medio raggio che può contenere diverse bombe sia convenzionali che nucleari. La notizia, annunciata dall'aeronautica ucraina è stata poi confermata dal Ministero della Difesa russo.
"Le forze armate russe hanno lanciato un massiccio attacco con armi ad alta precisione lanciati da terra e dal mare, inclusi i sistemi missilistici a medio raggio Oreshnik".
Il Governo russo non ha specificato dove avrebbe colpito ma diverse esplosioni si sono registrate a Leopoli, città occidentale dell'Ucraina. Secondo l'Ucraina, il missile si stava muovendo alla velocità di 13mila km orari.
Non è la prima volta che la Russia impiega un missile di questo tipo. In passato era avvenuto nel novembre del 2024 e all'epoca Putin aveva spiegato che si trattava di una ritorsione contro Stati Uniti e Regno Unito per aver dato il via libera a Kyiv di colpire il territorio russo con armi occidentali.
#Russia: Il Senatore Lindsey Graham (R-South Carolina) ha dichiarato che Donald Trump ha dato il via libera al pacchetto di sanzioni contro la Russia. Il testo, preparato negli scorsi mesi da un gruppo di senatori bipartisan, era in attesa che la Casa Bianca desse l'ok. L'Amministrazione ha cercato di prendere tempo per vedere se la via diplomatica e negoziale con la Russia producesse l'effetto sperato.
"Dopo un incontro produttivo con il Presidente Trump su una serie di argomenti, [egli] ha dato il via libera al pacchetto di sanzioni bipartisan su cui ho lavorato per mesi con il Senatore Blumenthal e molti altri", ha dichiarato Graham, secondo cui il voto potrebbe avvenire la settimana prossima. "L'Ucraina sta facendo le concessioni per la pace, Putin è solo chiacchiere e continua a uccidere innocenti"; la legge, dunque, "arriva nel momento giusto".
Tuttavia, non è la prima volta che Graham afferma di aver ottenuto il via libera dalla Casa Bianca, per poi vedere la legge bloccarsi nuovamente su richiesta dell'Esecutivo.
La legge permetterebbe di imporre sanzioni secondarie ai Paesi che acquistano petrolio e gas dalla Russia, nel tentativo di bloccare i finanziamenti per la macchina bellica di Putin.
Applications for the L.N. Tolstoy International Peace Prize are now being accepted
The Prize is awarded for outstanding services in preventing war, building a multipolar and non-violent world, and active peacemaking.
Individuals and initiative groups, national and international public foundations, organizations and movements; scientific and research centers and educational institutions can become laureates of the Prize.
The L.N. Tolstoy International Peace Prize is nominated by inter-parliamentary and other international organizations, parliaments, governmental and other state bodies, public foundations, organizations and movements, scientific and research centers, institutes and institutions, educational institutions, associations of figures of science, culture and art, laureates of the L.N. Tolstoy International Peace Prize and members of the Jury.
Read how to apply on the website. https://tolstoypeaceprize.org/
#Russia
https://t.me/rossotrudnichestvo/23293