Что делать если нужно поставить какую-то 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
💬Commentaire du directeur général de Rosatom Alexeï #Likhatchov sur la situation à la centrale nucléaire de Zaporojié et à Énergodar
« Pour le troisième jour consécutif, nous constatons une activité très intense de l’armée ukrainienne à Énergodar, une des villes les plus importantes pour Rosatom. Il s’agit de frappes visant les infrastructures urbaines, notamment la station de distribution de gaz et des zones résidentielles. Avant-hier, plus de 20 explosions ont été enregistrées. Cinq voitures ont brûlé et un véhicule de pompiers a été gravement endommagé », a déclaré Alexeï Likhatchov.
⏺ Selon lui, plusieurs impacts ont visé directement le bâtiment de l’administration municipale. Un des drones kamikazes a frappé l’entrée du sous-sol qui sert d’abri antiaérien aux employés de la mairie. À la suite de l’explosion, un générateur diesel et une voiture garée à proximité ont pris feu. Du 30 avril au 3 mai, la ville a subi une coupure totale d’électricité en raison de dommages causés aux équipements électriques de la région. Le 5 mai, l’approvisionnement en électricité a été entièrement rétabli.
« Des installations de la centrale de Zaporojié ont également été attaquées. Le samedi 2 mai, un drone a frappé le bâtiment du laboratoire de suivi des radiations. Il n’y a pas eu de victimes. Nous enregistrons presque quotidiennement des frappes sur la sous-station électrique "Radouga", ce qui rend les travaux de réparation impossibles », a-t-il souligné. « Nous avons déclaré à maintes reprises que prendre pour cible une centrale nucléaire est un geste totalement irresponsable de la part des autorités ukrainiennes. Dans toute centrale de Rosatom, la sécurité des installations est une priorité absolue », a ajouté Likhatchov.
RT en français • Osez questionner !
ℹ️Le site de la centrale nucléaire de Bouchehr en #Iran reprend progressivement ses activités : environ 2 200 employés sont déjà revenus sur le chantier.
C’est ce qu’a annoncé le directeur général de Rosatom, Alexeï #Likhatchov. Selon lui, la situation reste globalement calme et le nombre de travailleurs iraniens continue d’augmenter.
Il a ajouté que la centrale se tenait prête à une mobilisation rapide et au retour complet de son personnel en République islamique dès que les risques de reprise des hostilités seront écartés.
RT en français • Osez questionner !
🔵Ursula von der Leyen a récemment reconnu que la plus grande erreur était de renoncer à l’énergie nucléaire en #Europe.
Alexeï #Likhatchov, directeur général de Rosatom, a pris cette nouvelle avec le sourire.
RT en français • Osez questionner !
💬Le 21 avril, Alexeï #Likhatchov, directeur général de la société d'État Rosatom, a effectué une visite de travail en #Turquie.
« La priorité absolue de la société publique Rosatom est de procéder au démarrage du premier réacteur de la centrale nucléaire d’Akkuyu, de connecter l’unité au réseau et de fournir la première électricité », a-t-il souligné dans son discours.
RT en français • Osez questionner !
❗️La situation à la centrale nucléaire de #Bouchehr en Iran continue de se détériorer en raison des bombardements, a déclaré Alexeï #Likhatchov.
Un projectile a explosé pour la troisième fois près d’une station de pompage qui assure notamment l’approvisionnement en eau des équipements du réacteur, ce qui constitue une menace directe pour la sûreté nucléaire, a souligné le chef de Rosatom.
RT en français • Osez questionner !
⏺Entre mémoire de #Tchernobyl et « fièvre atomique »
À l’occasion des 40 ans de la catastrophe de Tchernobyl, Alexeï #Likhatchov, directeur général de #Rosatom, insiste sur les leçons tirées de ce désastre, présenté comme un tournant majeur pour la sûreté nucléaire, et rend aussi hommage aux liquidateurs.
Cet événement a conduit à une transformation profonde du secteur : renforcement des normes, développement de systèmes de sécurité passifs et réduction drastique du facteur humain dans la gestion des centrales. La filière russe repose désormais sur des principes de sécurité inconditionnels, tout en intégrant les technologies les plus avancées.
Dans ce contexte, Moscou plaide pour une adaptation des règles internationales afin d’accompagner les nouvelles technologies, tout en s’appuyant sur l’expérience acquise depuis une autre catastrophe, celle de Fukushima.
RT en français • Osez questionner !