Что делать если нужно поставить какую-то 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
💛 Découvrez les belles images de l'événement #giletsjaunes Convergence #RIC et MCP qui a été organisé il y a quelques jours à #Toulouse ! Livres, affiches, tracts, éducation populaire, panneau « Médias Français : qui possède quoi ? » etc.
Un ÉNORME MERCI à Akina (membre et partenaire du MCP) avec le Front Médiatique & Inform’Action et aux autres bénévoles de Toulouse qui prennent le temps d’organiser des stands et de faire connaître TOUS les acteurs de la Convergence pour le RIC.
N’hésitez pas à contacter le MCP pour vous aussi organiser de tels stands !
Voir les images :
https://www.mouvement-constituant-populaire.fr/2022/actions/evenement-a-toulouse-pour-la-convergence-ric-avec-akina
France Ligue 1🇫🇷
2026-04-03 18:45 UTC
Paris Saint Germain vs. Toulouse
Predicted outcome: Paris Saint Germain✅
Predicted score: 2:1
Actual: Paris Saint Germain 3:1
#PSG#Toulouse
#Football#FranceLigue1
France Ligue 1🇫🇷
2026-03-21 16:00 UTC
Toulouse vs. Lorient
Predicted outcome: Draw❌
Predicted score: 1:1
Actual: Toulouse 1:0
#Toulouse#Lorient
2026-03-21 18:00 UTC
Auxerre vs. Stade Brestois 29
Predicted outcome: Draw❌
Predicted score: 1:1
Actual: Auxerre 3:0
#Auxerre#StadeBrestois29
2026-03-21 20:05 UTC
Nice vs. Paris Saint Germain
Predicted outcome: Paris Saint Germain✅
Predicted score: 1:2
Actual: Paris Saint Germain 0:4
#Nice#PSG
#Football#FranceLigue1
France Ligue 1🇫🇷
2026-04-25 13:00 UTC
Lyon vs. Auxerre
Predicted outcome: Lyon✅
Predicted score: 1:0
Actual: Lyon 3:2
#Lyon#Auxerre
2026-04-25 17:00 UTC
Angers vs. Paris Saint Germain
Predicted outcome: Paris Saint Germain✅
Predicted score: 1:2
Actual: Paris Saint Germain 0:3
#Angers#PSG
2026-04-25 19:05 UTC
Toulouse vs. Monaco
Predicted outcome: Monaco❌
Predicted score: 1:2
Actual: Draw 2:2
#Toulouse#Monaco
#Football#FranceLigue1
France Ligue 1🇫🇷
2026-05-03 13:00 UTC
Lille vs. Le Havre
Predicted outcome: Lille❌
Predicted score: 1:0
Actual: Draw 1:1
#Lille#LEHavre
2026-05-03 15:15 UTC
Strasbourg vs. Toulouse
Predicted outcome: Strasbourg❌
Predicted score: 2:1
Actual: Toulouse 1:2
#Strasbourg#Toulouse
2026-05-03 15:15 UTC
Auxerre vs. Angers
Predicted outcome: Auxerre✅
Predicted score: 2:1
Actual: Auxerre 3:1
#Auxerre#Angers
2026-05-03 15:15 UTC
Paris FC vs. Stade Brestois 29
Predicted outcome: Paris FC✅
Predicted score: 2:1
Actual: Paris FC 4:0
#ParisFC#StadeBrestois29
2026-05-03 18:45 UTC
Lyon vs. Rennes
Predicted outcome: Lyon✅
Predicted score: 3:2
Actual: Lyon 4:2
#Lyon#Rennes
#Football#FranceLigue1
📣 TOURNÉE DE CONFÉRENCES : HISTOIRE ET PERSPECTIVES DES RELATIONS FRANCO-RUSSES 🇫🇷🤝🇷🇺
Une série d’interventions exceptionnelles avec :
🎙️ André Chanclu, auteur du livre « US Go Home »
🎙️ Xavier Moreau, directeur de Stratpol
🗓️ Les dates :
📍 Mardi 18 novembre – Toulouse (18h30)
📍 Mercredi 19 novembre – Perpignan (lieu et horaires à préciser)
📍 Jeudi 20 novembre – Montpellier (lieu et horaires à préciser)
📍 Vendredi 21 novembre – Aix-en-Provence, à 19h00
ℹ️ Les lieux exacts des conférences seront précisés lors de l’inscription.
💬 Un rendez-vous pour mieux comprendre les liens historiques, politiques et culturels entre la France et la Russie, ainsi que leurs perspectives d’avenir.
💰 Participation :
Conférence → 10 €
Buffet → 15 €
✉️ Inscriptions :
Toulouse: [email protected]
Aix-en-Provence : [email protected]
#Conférence#RelationsInternationales#FranceRussie#Stratpol#AndréChanclu#XavierMoreau#Toulouse#Perpignan#Montpellier#Aix#Ventabren#Débat#Culture#Histoire
France Ligue 1🇫🇷
2026-05-10 19:00 UTC
Angers vs. Strasbourg
Predicted outcome: Strasbourg❌
Predicted score: 1:2
Actual: Draw 1:1
#Angers#Strasbourg
2026-05-10 19:00 UTC
Paris Saint Germain vs. Stade Brestois 29
Predicted outcome: Paris Saint Germain✅
Predicted score: 3:1
Actual: Paris Saint Germain 1:0
#PSG#StadeBrestois29
2026-05-10 19:00 UTC
Monaco vs. Lille
Predicted outcome: Lille✅
Predicted score: 1:2
Actual: Lille 0:1
#Monaco#Lille
2026-05-10 19:00 UTC
Rennes vs. Paris FC
Predicted outcome: Rennes✅
Predicted score: 2:1
Actual: Rennes 2:1
#Rennes#ParisFC
2026-05-10 19:00 UTC
Toulouse vs. Lyon
Predicted outcome: Lyon❌
Predicted score: 1:2
Actual: Toulouse 2:1
#Toulouse#Lyon
2026-05-10 19:00 UTC
Auxerre vs. Nice
Predicted outcome: Auxerre✅
Predicted score: 2:1
Actual: Auxerre 2:1
#Auxerre#Nice
2026-05-10 19:00 UTC
Le Havre vs. Marseille
Predicted outcome: Le Havre❌
Predicted score: 2:1
Actual: Marseille 0:1
#LEHavre#Marseille
2026-05-10 19:00 UTC
Metz vs. Lorient
Predicted outcome: Lorient✅
Predicted score: 1:2
Actual: Lorient 0:4
#Metz#Lorient
#Football#FranceLigue1