Что делать если нужно поставить какую-то 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
🚀 U.S. President Donald Trump Anticipates Imminent Peace Agreement with Iran
U.S. President Donald Trump has conveyed a positive outlook regarding the potential for a peace agreement with Iran. According to NS3.AI, Trump believes that negotiations are progressing favorably, suggesting that a resolution may be reached soon. This development comes amid ongoing diplomatic efforts to address tensions between the two nations. The President's remarks highlight a significant shift in the geopolitical landscape, with implications for international relations and regional stability.
#DonaldTrump#Iran#PeaceAgreement#Diplomacy#InternationalRelations#Geopolitics#MiddleEast#Negotiations#RegionalStability
🚀 Iran Expresses Readiness for Regional Peace Agreement
Iranian President Ebrahim Raisi has expressed the country's readiness to establish a balanced and fair agreement to ensure lasting peace and security in the region. According to BlockBeats, this statement was made during a phone conversation with Russian President Vladimir Putin on April 12, as reported by Iran's Tasnim News Agency.
#Iran#EbrahimRaisi#VladimirPutin#RegionalPeace#Security#PeaceAgreement#IranRussia#BlockBeats#TasnimNews
🚀 Middle East Ceasefire Expected to Hold Despite Fragility
Jefferies global economist Mohit Kumar has stated that despite the fragility of the Middle East ceasefire agreement, it is expected to hold. According to Odaily, Kumar noted that both parties have reached a point where they desire a ceasefire, as continued conflict would negatively impact both sides.
Kumar highlighted that U.S. President Donald Trump is keen on reaching an agreement, as he lacks support from his core base for ongoing warfare. Meanwhile, the Iranian Revolutionary Guard faces challenges due to economic devastation, potentially paving the way for future uprisings. He concluded that given the interests of both parties, the unstable ceasefire is likely to persist.
#MiddleEast#Ceasefire#MohitKumar#US#Iran#DonaldTrump#Conflict#RevolutionaryGuard#GlobalEconomics#PeaceAgreement#Odaily
🚀 STOCKS | S&P 500 Rises for Seventh Day Amid U.S.-Iran Peace Deal Optimism
The S&P 500 extended its gains for the seventh consecutive session, buoyed by growing optimism about a potential long-term peace agreement between the U.S. and Iran. Wall Street Journal (Markets) posted on X, highlighting the positive sentiment among investors as diplomatic efforts continue to progress. The sustained rally in the S&P 500 reflects investor confidence in the potential easing of geopolitical tensions, which could have significant implications for global markets. Analysts suggest that a successful peace deal could lead to increased stability in the region, potentially benefiting various sectors, including energy and defense. As negotiations advance, market participants remain attentive to developments that could influence future market movements.
#SP500#USIranPeaceDeal#WallStreet#GeopoliticalTensions#MarketOptimism#EnergySector#DefenseSector#InvestorsConfidence#GlobalMarkets#PeaceAgreement#DiplomaticEfforts
Premiering now: The Standard Signal | Ep.14: Tigray on the Brink: Survival, Famine Risks, and the Shadow of Renewed War in Ethiopia.
Click here to watch: https://www.youtube.com/watch?v=YDjUomfsWnA
Tigray is facing fragile recovery, deepening humanitarian strain, and growing fears of renewed war.
In this episode of The Standard Signal, Duke Burbridge shares what he witnessed on the ground — from survival and displacement to aid challenges and famine risks.
#StandardSignal#EthiopiaPolitics#ONLF#Ogaden#PeaceAgreement#PoliticalRepression#ShrinkingCivicSpace#ResourcePolitics#OilAndGas#Federalism#DemocracyInEthiopia#HornOfAfrica#Accountability#PoliticalDialogue#Tigray