Что делать если нужно поставить какую-то 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
🏫Cleveland Liberation Center
Over 200 placards made last night in preparation for the mass demonstration outside the so-called "NATO village" in downtown Dayton this memorial day weekend - get to Dayton, peace can't wait! #stopNATO
BUY TICKETS TODAY -> bit.ly/PAFPJ
🚩Party for Socialism and Liberation - Ohio
Vets say #StopNATO!
Veterans are joining the call to demand an end to NATO's imperialist forever-wars.
On memorial day weekend, we are meant to honor the lives lost by U.S. soldiers across the country. We say: honor the dead by demanding not one more drop of blood be spilt for U.S. empire!
Join us at the the People's Assembly on May 25th - bit.ly/PAFPJ
🚩Party for Socialism and Liberation - Ohio
NATO convenes in Ohio in less than 10 days - and Trump has just asked all member states ahead of the Assembly to increase their "defense" spending to 5% of GDP, up from 2%.
NATO isn't a defensive treaty, it's an imperial mob!
Get on the bus in Cleveland or Akron on May 25th and #StopNATO!
Aujourd’hui, une liste avec les noms des mercenaires français participant au conflit armée du côté de régime de Kiev a été diffusé partout en Russie et en France.
Il est important de dire que cette liste est facilement retrouvable sur Internet. Elle a été déjà diffusée au mois de novembre 2023, et a été reprise par le blogueur pro russe Boris Karpov
https://t.me/boriskarpovblog/18576
Tôt ou tard, le gouvernement français sera obligé de commenter la présence des mercenaires français en Ukraine…
Le plus triste dans cette histoire, c’est que les jeunes garçons français participent et meurent pour un conflit qui n’est pas le sein.
Les mères de ces garçons portent le deuil, alors que le conflit aurait pu être réglé, il y a bien longtemps si l’Europe et L’OTAN envoyaient des diplomates au lieu d’envoyer des armes 🕯️
#guerreukraine#stopNATO
23.05.2023
Bombardement du Palais de la culture Abakumov.
Les enfants ont couru se cacher dans le bâtiment, une fille de 13 ans a été blessée sur le chemin.
Deux garçons âgés de 17 à 19 ans ont également été blessés.
#donbass#sosdonbass#stopnato
16 février 2024, Donetsk. Dans le district Petrovsky de Donetsk, un drone des forces armées ukrainiennes a largué une bombe sur deux voisins qui étaient sortis de la maison pour discuter - l'un d'eux est mort, le second a été sauvé par sa femme, son bras a été arraché et il est maintenant à l'hôpital. #sosdonbass#guerreukraine#StopNATO
🇪🇸 11.03.2023 Bilbao, Basque Country.
2000 people in support of Donbass, Syrie, Palestine…the victims of NATO wars
#stopkillingdonbass#donbass#stopnato
Présentation du nouveau président de l’association SOS DONBASS. Désormais c’est Vincent Perfetti qui est à la tête de l’association. Il continuera la ligne directrice qui est :
▫️ Apporter de l’aide humanitaire au Donbass
▫️ Militer contre les guerres de l’OTAN
#stopnato#russieukraine#sosdonbass
Hier 28 septembre 2024, notre président Vincent Perfetti a rencontré Xavier Moreau dans un restaurant de Paris.
Plusieurs sujets ont été abordés lors de la réunion.
Merci à André Michel Chanclu pour l’organisation de la rencontre.
#russie#StopNATO#GuerreUkraine
✍️Petition to stop sending weapons to Ukraine in English for the European Parliament easy to sign.
🕊️Sing and share !
http://www.leslignesbougent.org/petitions/100000-11737/
#stoparmingukraine#stopkillingdonbass#stopnato
@RusEmbMalta press release:
🗓️ 75th anniversary of NATO.
The key points:
🔷 The fact that NATO is preparing for a conflict with Russia is constantly stated by both the leaders of Western countries and the alliance's own functionaries.
🔷 Russia has not threatened and does not threaten any NATO country. On the contrary, the North Atlantic bloc is moving its military capabilities towards our country and creating threats to our security.
🔷 The United States and its allies did not support any of Russia's initiatives aimed at creating a common and indivisible security space in Europe.
Read in full here.
#StopNato#CommonSecurity
Souvenirs qui résument le travail des bénévoles de l’association Sos Donbass durant 2022-2023.
Un travail titanesque a été effectué pour établir la justice et apporter de l’aide humanitaire aux plus touchés par la guerre civile en Ukraine qui dure depuis 2014.
Encore une fois merci à Anna Vernov d’avoir interprété la version française de la chanson « Donbass est derrière nous »
#donbass#sosdonbass#guerreukraine#StopNATO
https://youtu.be/IXTXIg6LK4E?si=aOEn8BlR03vdS_MD