Что делать если нужно поставить какую-то 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
‼️💻The Gardiyum hacking group claimed responsibility for cyber attacks on three major institutions in Bahrain through three separate statements.
🔻 According to the group's claims, over the past 24 hours, operations were carried out against the Khaleeji Bank, the Bahrain Stock Exchange, and Gulf Air airlines, resulting in the systems of these entities being rendered inaccessible for consecutive hours.
🔻 Following these attacks, widespread disruption in service delivery occurred, which, according to Gardiyum, has led to significant damage and extensive dissatisfaction.
#Bahrain
🇧🇭‼️The Public Prosecution of the Al Khalifa regime in Bahrain is demanding the death penalty for who took photos from restricted areas after Iranian attacks!
🔺This authority has accused the detainees of "great treason."
🔺The Ministry of Interior of the Al Khalifa regime arrested 12 Bahraini citizens on charges of filming and sharing videos related to the Iranian armed forces' attacks on U.S. military sites.
#Bahrain
#Iran, #Bahrain: Il Ministero dell'Interno del Bahrain ha annunciato il divieto di manifestazioni e assembramenti in luoghi pubblici per motivi di sicurezza relativi al conflitto scaturitosi nel Golfo.
🇧🇭⛔️ The anti-Iran draft resolution proposed by Bahrain was not adopted
🔹The UN Security Council rejected Bahrain's anti-Iran draft resolution on reopening the Strait of Hormuz, with Russia and China casting vetoes.
🔺 The Bahraini draft resolution initially emphasized the use of all necessary means to reopen the Strait of Hormuz—implying military action—and later, after this clause was removed, focused on defensive and proportionate efforts to ensure maritime security. However, Russia and China used their veto power to block its adoption.
➡️ The representatives of Pakistan and Colombia also refrained from participating in the vote.
#Iran#Bahrain
🇧🇭‼️Seyyed Mohammad al-Mousawi, a Bahraini citizen, was martyred today due to injuries sustained from torture in the prison of the Al Khalifa regime. In the released video, the effects of torture and signs of beating are clearly visible on his face and various parts of his body, and evidence of electric shock is also apparent on his body.
— The martyr was from the Al-Muharraq region and was the son of Seyyed Mohsen al-Mousawi, a cleric from the area, who had previously been imprisoned by the Bahraini regime for over 12 years and was released in 2024 on the occasion of Eid; however, he was recently rearrested by the regime.
➡️ Today, Bahrainis gathered in front the family home of the martyr Seyyed Mohammad al-Mousawi and held a funeral procession for his body while chanting slogans pledging covenant with the martyr.
✍️The Al Khalifa regime has recently arrested and imprisoned a number of Bahraini citizens on false charges of cooperating with Iran or photographing the sites of attacks. The deep-rooted rancor and enmity of the Al Khalifa regime toward Iran and Bahrain’s Shia community are the main reasons behind the arrest and killing of innocent Bahraini citizens and the inhumane actions taken against them.
✍️ Following the heavy strikes by Iran’s armed forces against American bases in the country, Bahrain is on the verge of another popular uprising against the Al Khalifa regime. With the support of Iran and the Shia religious authority, the people can overthrow the puppet Al Khalifa regime.
#Iran#Bahrain
🇮🇷#Iran - 🇧🇭#Bahrain: Footage circulating on Iranian channels show the aftermath of an Iranian missile that has struck Bahrain's Petrolum Company in Sitra moments ago.
🇮🇷#Iran - 🇧🇭#Bahrain: Footage showing an Iranian drone hitting a high-rise building in Bahrain, Manama, earlier today.
(via @Osint613 on X & @theleaflet)