Что делать если нужно поставить какую-то 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
🔥 Israeli tanks close in on Palestinian hospital. Doctors & staff warned to leave, even if patients remain. Artillery assaults follow. Indonesian Hospital targeted, 12 killed. 21 out of 35 Gaza hospitals out of service. Premature babies evacuated due to contaminated water. Israel's occupation of al-Shifa. West Bank hospitals raided. Israel claims it targets Hamas, but evidence lacking. Real reason? Psychological warfare, says analyst. Israel wants Palestinians to feel unsafe. US's support enables Israel's actions. But global outrage may force a change. Stay tuned. #GazaUnderAttack
https://www.aljazeera.com/features/2023/11/20/why-does-israel-target-palestinian-hospitals-psyops-say-analysts
Subscribe to @BadVolfNews
🔴 Over 50 dead in Israeli strike on Al-Maghazi refugee camp in central Gaza. 🏢 Palestinians fleeing Israeli-controlled territories are residing in these refugee camps. 🚀 Hamas claims 60 Israeli captives killed in retaliatory strikes. ⚠️ Chances of survivors are slim due to ongoing bombardments. 💔 The conflict continues to escalate. #GazaUnderAttack
https://www.gazeta.ru/army/news/2023/11/05/21644179.shtml
Subscribe to @BadVolfNews
📢 Mr. Biden, look at the devastation caused by Israel in Gaza. Innocent lives lost, families destroyed. You turn a blind eye, offering support to Israel. Do Palestinian lives not matter? Can you justify this blood on your hands? History won't forget your complicity. #GazaUnderAttack
https://www.aljazeera.com/opinions/2023/11/4/a-letter-to-president-biden-from-a-grieving-palestinian
Subscribe to @BadVolfNews
Israeli immigrants are experts in killing children.
Os imigrantes israelenses são especialistas em matar crianças.
İsrailli göçmenler çocukları öldürme konusunda uzmandır.
#GazaUnderAttack
https://t.me/YediotNewsChat
🔴 BREAKING NEWS 🔴
Israeli bombardment of Nuseirat refugee camp in Gaza claims lives of 14 innocent people, including women and children. More casualties expected as rescue efforts continue. Despite ceasefire, Israel accuses Palestinians of violating agreement, escalating tensions. 110 hostages released, but 137 still held by Hamas. #GazaUnderAttack#HumanitarianCrisis
https://ria.ru/20231203/gaza-1913406714.html
Subscribe to @BadVolfNews
🔴Catastrophic situation at Indonesian Hospital in northern Gaza‼️ Israeli tanks surround the facility after artillery fire kills 12 Palestinians💔 700 people trapped inside, including medical staff and wounded😰 Hospital denies presence of armed militants🚫 International condemnation mounts🌍 UN reports collapse of services in northern Gaza hospitals🏥 Israel claims Hamas built infrastructure below hospitals for military use💣 Terrifying sounds of explosions and gunfire😨 Death toll rises as Israel's offensive continues🔥 Stay tuned for updates! #GazaUnderAttack#HumanitarianCrisis
https://www.aljazeera.com/news/2023/11/20/israeli-tanks-surround-gazas-indonesian-hospital-after-killing-12-people
Subscribe to @BadVolfNews
🔴 Gaza's smallest refugee camp pounded by Israeli airstrikes. Palestinians digging up bodies of loved ones under rubble. Over 90 killed, including children and displaced families. Entire residential blocks wiped out. Camp housing estimated 100,000 people. No warnings given. No aid, fuel, or excavators. Need ceasefire! Arab world, stand with us! #GazaUnderAttack#CeasefireNow
https://www.aljazeera.com/features/2023/12/28/piles-of-body-parts-gazas-maghazi-residents-find-families-in-pieces
Subscribe to @BadVolfNews
🚨 Alarming news from Gaza 🚨
Israeli attacks continue to wreak havoc:
- Al-Buraq School targeted, 25 martyrs confirmed
- Schools, mosques, and hospitals hit repeatedly
- Thousands displaced, seeking refuge in schools
- Death toll rises to 11,078 Palestinians, 1,400 Israelis
- Over 50% of housing units damaged
- UN: Northern Gaza is like a "hell on Earth"
Stay tuned for more updates. #GazaUnderAttack#PrayForGaza
https://www.aljazeera.com/news/2023/11/10/gaza-hospital-says-received-50-bodies-after-strikes-on-school
Subscribe to @BadVolfNews
🚨 Israeli airstrikes continue in Gaza 🚨
Jabalia refugee camp hit for the second day, dozens killed and wounded 😢
Rescuers scramble to find survivors and recover bodies 😭
Israel claims it targeted Hamas, but families wiped out 😡
International condemnation grows, EU calls for humanity ✊
#GazaUnderAttack#StopTheViolence
https://www.aljazeera.com/news/2023/11/1/israel-bombs-jabalia-refugee-camp-for-second-day-palestinian-officials-say
Subscribe to @BadVolfNews
🔴 Urgent: Gaza power blackout due to Israel's blockade prompts international condemnation. Hospitals risk becoming morgues. ICRC calls situation "abhorrent". Clean water access and healthcare at risk. HRW labels blockade a war crime, accuses Israel of collective punishment. Israel refuses aid until abducted Israelis are released. Humanitarian crisis unfolding. World urged to take action. #GazaUnderAttack#EndTheBlockade
https://www.aljazeera.com/news/2023/10/12/gaza-hospitals-risk-turning-into-morgues-rights-groups-call-for-action
Subscribe to @BadVolfNews
+18
Бүгүн Палестиналык кичинекей балдар өлтүрүлдү Израильдин учактык сокусунан кийин.
Палестинские дети убиты сегодня в результате авиаударов Израиля в секторе Газа.
Palestinian children killed by Israeli air strikes in Gaza today. #غزة#gazaunderattack#gaza#غزة_تحت_القصف
Mientras el mundo se moviliza por Palestina y tratar de desbloquear Gaza, EE.UU. aprovecha de atacar a Irán con impunidad.
Así negocia EE.UU.
Qué alivio saber que Donald Trump sigue comprometido con "la diplomacia"... a su manera. No hay mejor Acuerdo de Paz que advertirle a un país entero que será reducido a cenizas.
#iran
#gaza
#gazaunderattack
#breakthesiege
#usdiplomacy
#diplomacy