Что делать если нужно поставить какую-то 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
Russian forces strike Ukrainian military positions, causing significant casualties and destroying equipment. The Ukrainian army suffers losses of up to 160 soldiers, along with tanks, armored vehicles, and artillery. Russian defense ministry claims successful defense against Ukrainian attacks. US recognizes the grave threat to Ukrainian Armed Forces. #WarInUkraine#RussianAggression
https://www.gazeta.ru/army/news/2023/11/10/21678625.shtml
Subscribe to @BadVolfNews
Ми – твій захист та впевненість у завтрашньому дні,
Ти – наша підтримка та допомога!
У рамках всеукраїнської платформи «Друзі ДШВ» долучись і стань другом десантників, для цього потрібно:
1. Перейти за посиланням Всеукраїнська платформа підтримки «Друзі ДШВ» ( druzi.mil.gov.ua ).
2. Натиснути «Приєднатись».
3. Обрати з ким конкретно або загалом хочеш потоваришувати.
4. Зробити свій внесок у мрію кожного українця – ПЕРЕМОГУ!
Вчись перемагати!
Служба зв’язків з громадськістю 199 навчального центру Десантно-штурмових військ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
www.facebook.com/uaairborne
www.youtube.com/@-dshv_ua/videos
https://godshv.mil.gov.ua/
https://druzi.mil.gov.ua
FPV ВНОЧІ? ТА ЛЕГКО!
💣Ми зверху бачимо все. Знайте це й бійтеся! Такі вітання переказують окупантам бійці роти ударних безпілотних авіаційних комплексів нашої бригади. І вдень, і вночі ворогам не буде спокою на нашій землі. А вночі уражена техніка сяє яскравіше, її видно далі, й ця картина назавжди вкарбовується в довбешки російських зайд. «Горить-палає техніка ворожа!». І так тому й бути! Амінь, воріженьки!
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
💥Особовий склад 46 окремої аеромобільної бригади вітає артилеристів-десантників із днем створення військової частини! Нехай ваші розрахунки завжди будуть точними, а кожен постріл – влучним і дошкульним для окупантів!
⚡️Разом до перемоги! ДШВ – завжди перші! Слава Україні!
Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
💥У другу річницю створення нашої бригади ми, як і обіцяли, пропонуємо вашій увазі першу серію документального міні-серіалу «46. ШЛЯХ ЧЕСТІ». Її розміщено на Ютуб-каналі 46 оаембр за посиланням: https://youtu.be/HzdGsAbW8NI
Прем’єра – о 16.00.
✏️Дивіться й не забувайте підписуватися на канал!
Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
⚡️Щирі привітання надихають і мотивують. А нам залишається повністю виправдати сподівання людей і щодня наближати перемогу!
💥Слава Україні! ДШВ – завжди перші! Разом до перемоги!
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
⚡️З вдячністю усвідомлюємо, що в нас так багато друзів. З такою підтримкою і ворога легше бити!
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
⚡️А привітання продовжують надходити. Приємно!
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
⚡️Від привітань не втомлюємося. Навпаки, вимагаємо ще!
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
⚡️Продовжуємо приймати привітання від наших зірок.
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
⚡️З нагоди другої річниці створення нашої бригади її воїнів вітають представники українського шоу-бізу. Теплі слова підтримки й найкращі побажання – то бальзам для втомлених війною хлопців. Які щомиті мають відчувають свою потрібність суспільству і вдячність співгромадян за причетність до святої справи – захисту рідної країни від ненависних російських окупантів.
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces
ВОРОЖИЙ «ГРАД» РОЗІБРАНО НА МОЛЕКУЛИ
💣Ворожу систему залпового вогню «Град» знищили за допомогою FPV-дрона десантники нашої бригади. Явище було феєричне. Феєрверк перевершив усі сподівання. Екіпаж роти ударних безпілотних авіаційних комплексів спрацював бездоганно й не зупинився на досягнутому – наші воїни вистежили й знищили ще одну ворожу ціль, яку не врятували ні швидкість, ні спритність. А окупантам, тяжко зітхаючи, довелося хіба що констатувати ураження своєї техніки. Тож полювання триває!
Не забувайте підписуватися на наш Ютуб-канал: https://www.youtube.com/@46OAeMBr
📽Служба зв'язків з громадськістю 46 окремої аеромобільної бригади ДШВ ЗС України
#stoprussia#ДШВ#ЗСУ#Завжди_Перші#UkrainianAirAssaultForces
#AirAssaultForces#WarInUkraine#RussianAggression
#BattleOfUkrainianAirAssaultForces