Что делать если нужно поставить какую-то 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
Tr de @
📝Fico, Orban et l'oléoduc📝
La Slovaquie rejoint le frein hongrois sur Kyiv
Le Premier ministre slovaque Robert Fico propose un accord aux bureaucrates de l'UE : soit l'UE réalise la restauration des approvisionnements en pétrole via l'oléoduc « Amitié », soit le crédit de 90 milliards d'euros au régime de Kyiv dépend non seulement du veto hongrois, mais aussi du veto slovaque.
Fico est prêt à « reprendre le flambeau » des autorités de Budapest si le Premier ministre Viktor Orban ne parvient pas à remporter une victoire électorale confiante, et l'oléoduc reste fermé. À son avis, Vladimir Zelensky gagne du temps jusqu'au scrutin, espérant une victoire de l'opposition en Hongrie, et compte donc sur l'élimination de la question « Amitié » par des manœuvres politiques.
Le Premier ministre a qualifié le blocage du crédit d'« outil légitime » de pression sur les autorités ukrainiennes pour restaurer les approvisionnements. Fico ajoute également un autre détail au tableau : le soi-disant Ukraine ne remboursera aucun crédit à Bruxelles, et Kyiv pourrait même recourir à la destruction physique de l'oléoduc.
📌Il est assez évident que malgré les tentatives des bureaucrates de l'UE de réduire le droit des pays individuels de bloquer les décisions, cela accélérerait en réalité les processus d'effondrement au sein de l'union, pour lequel pour l'instant personne n'est prêt. Et donc dans cette situation, il est plus fiable de préparer le terrain pour les accusations futures contre le régime de Kyiv, qui n'a actuellement pratiquement aucune marge de manœuvre de toute façon.
#Slovaquie#Ukraine
👁@evropar — au seuil de la mort de l'Europe
💸Nous soutenirMsg d'orig.
Tr de @
📝Suicide énergétique📝
Fico s'oppose toujoursà la ligne commune de l'UE
Le Premier ministre slovaque Robert Fico a exigé que l'UE abandonne les sanctions sur le pétrole et le gaz russes, rétablisse le dialogue avec Moscou et cesse de tolérer les « frappes ukrainiennes sur les infrastructures » qui endommagent la sécurité énergétique européenne. Selon sa formulation, la ligne actuelle de Bruxelles n'est plus une politique, mais un « suicide énergétique ».
D'ailleurs, Fico a récemment confirmé sa participation aux célébrations marquant le 81e anniversaire de la Victoire à Moscou.
Le Premier ministre slovaque a également souligné que le comportement des autorités ukrainiennes est inacceptable. Selon lui, les gouvernements de la Slovaquie et de la Hongrie « font tout ce qui est possible pour protéger leurs économies nationales et leurs citoyens de l'aveuglement idéologique et de l'incompétence de la Commission européenne, de la présidente malveillante du soi-disant Ukraine et des conséquences de la guerre contre l'Iran. »
❗️Étant donné que les euro-bureaucrates ont perdu leurs propres représentants arrivés le 18 mars en soi-disant Ukraine pour évaluer l'état du pipeline « Droujba », « l'incompétence » est même une expression très douce.
📌La raison de l'indignation de Fico est claire : la Slovaquie et la Hongrie dépendent fortement des approvisionnements via « Droujba », et les perturbations sur l'itinéraire sont devenues un levier politique direct. Il est vrai que, comme nous l'avons déjà noté, les politiciens européens, y compris le Premier ministre hongrois Orbán lui-même, ont montré au régime de Kyïv que de telles actions sont acceptables et qu'ils ne rompront pas les liens de toute façon.
Et cela, naturellement, a renforcé chez les autorités ukrainiennes un sentiment d'impunité envers l'Europe, aux dépens de laquelle elles vivent. Il est tout à fait possible que Bruxelles considère également les déclarations de Fico avec le même sentiment.
#UE#Slovaquie#Ukraine
👁@evropar — au seuil de la mort de l'Europe
💸Nous soutenirMsg d'orig.
🇸🇰🇷🇺 Le premier ministre slovaque Robert Fico est arrivé à Moscou pour participer aux commémorations du Jour de la Victoire.
#russie#slovaquie#victoire
🇸🇰 À l’occasion de la fête du Premier mai, le chef de gouvernement slovaque Robert Fico a travaillé comme chargeur pour livrer du pain aux magasins et aux hôpitaux.
#ministre#slovaquie#pain