Что делать если нужно поставить какую-то 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
ALERTE 🚨#TOGO
Dora Dougbedji, résidant à Aflao et travaillant à Lomé, a été enlevée le lundi 30 juin 2025 alors qu'elle prenait un zemidjan (taxi-moto) pour se rendre à son travail, avec son nourrisson de 5 mois. Deux jours plus tard, on a retrouvé sa trace sous la torture, aux mains des agents du régime, au SCRIC (Service chargé de la torture, de l'emprisonnement et de la disparition de ceux qui critiquent le régime). Pendant ce temps, ses deux autres enfants ont été laissés seuls à la maison. Le SCRIC aurait demandé à sa famille de venir récupérer le nourrisson de 5 mois.
Crime présumé : publications critiquant le régime de #FaureGnassingbé sur TikTok. Nous exigeons sa libération inconditionnelle ainsi que celle de tous les autres prisonniers politiques.
Au nom de la Ligue de Défense Noire Africaine et de la Brigade Révolutionnaire pour la Défense du Peuple, je lui exprime tout mon soutien et condamne fermement cette situation. Nous restons mobilisés pour la libération de notre chère patrie, le togo 🇹🇬
REJOIGNEZ LA RÉSISTANCE SUR TELEGRAM.
🔺Pour les numéros français : https://t.me/egountchibehanzinTV
🔻Pour les numéros internationaux : https://t.me/EgountchiBehanzinOfficiel
WhatsApp ➡️https://whatsapp.com/channel/0029VbB8HYgFnSzIMQZl0113
Pour ceux qui souhaitent soutenir notre initiative, notre lien PayPal 🙏🏾https://www.paypal.com/donate/?hosted_button_id=YH6EQEQUDY55E est toujours disponible. Merci pour votre générosité !
@egountchibehanzinTV
Inacceptable ! J'ai appris avec effroi qu'au Togo 🇹🇬, le régime sanguinaire dirigé par le dictateur cannibale de la pire espèce, #FaureGnassingbé a ordonné l'agression du député sénégalais Guy Marius Sagna, dans le cadre de sa mission parlementaire de la Cedeao lors d'une réunion avec la société civile togolaise à Lomé.
Ce dernier a été grièvement blessé, évacué en urgence à l'hôpital avec le visage ensanglanté et a reçu 7 points de suture.
Voilà comment fonctionne ce régime barbare allié de #Macron et soutenu par la #France🇫🇷: terreur, violence, et barbarie sont leurs seuls outils de gouvernance. Faure Gnassingbé a envoyé ses forces armées et des miliciens en civil pour brutaliser les participants à cette réunion organisée par le CDPA.
J'appelle tous les Togolais, Sénégalais et Africains, indépendamment de leurs convictions politiques ou religieuses, à dénoncer fermement cette agression barbare et criminelle. Le gouvernement sénégalais doit, sans délai, convoquer l'ambassadeur togolais à Dakar et imposer des sanctions appropriées contre le régime du Togo.
Au nom de la Ligue de défense noire africaine, je condamne avec la plus grande fermeté cet acte inqualifiable et exprime tout mon soutien à Guy Marius Sagna. Je lui souhaite un prompt rétablissement.
Egountchi Behanzin, Président international de La Ligue de défense Noire Africaine
@egountchibehanzinTV
Au #Togo🇹🇬, Pourquoi "Alain Faux-cas " @alainfoka2005 reste t’il silencieux sur l’arrestation et la mise en prison de son collègue journaliste togolais Apollinaire Mewenemesse par son patron le dictateur de la pire espèce #FaureGnassingbé ?
#FreeTogo#FaureMustGo
@egountchibehanzinTV
Le Togo 🇹🇬 est un camp de concentration, une prison à ciel ouvert, un pays en faillite dirigé par un chef mafieux, Faure Gnassingbé un sous-homme dictateur et cannibale de la pire espèce en Afrique de l’Ouest. Aidons et soutenons le peuple togolais à se libérer.
#FreeTogo#Fauregnassingbé#FaureMustGo#LiberonsLeTogo
@egountchibehanzinTV
ALERTE INFO | Au #Togo, en plein coup d’état constitutionnel du dictateur de la pire espèce #FaureGnassingbé, depuis deux semaines, des sources nous informent de l'arrivée massive d'un convoi militaire comprenant plus de 50 véhicules de guerre en provenance du nord du pays vers la capitale Lomé. Nos enquêtes révèlent que ces véhicules de guerre ont été acheminés et stationnés ce 2 avril 2024 dans la plate-forme industrielle d'Adétikopé (PIA), juste après le poste de péage de Davié. La panique s'installe parmi une partie de la population togolaise qui ne comprend pas ces manœuvres. Pourquoi le dictateur sanguinaire Faure Gnassingbé fait-il venir autant de véhicules de guerre du nord vers la capitale en pleine crise constitutionnelle ? Craint-il un soulèvement populaire ou un coup d'État de certains officiers de l'armée dans la capitale, comme les rumeurs qui circulent dans les casernes militaires depuis quelques jours ? Est-ce pour cette raison que Faure Gnassingbé ne dort plus à la présidence mais au Camp "RIT" et surtout à Niamtougou, comme nos sources nous l'ont confirmé ? Affaire à suivre.
Image: d’illustration
#FreeTogo#FaureMustGo#EgountchiBehanzin
@egountchibehanzinTV