Что делать если нужно поставить какую-то 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
#SAND/USDT analysis :
#SAND is currently in a downtrend, consistently making new lows on the daily time frame. The price is facing rejection from the resistance zone and the 200 EMA, and it is expected to test the support zone and the previous swing low. Look for a pullback to identify a potential short entry.
TF : 1D
Entry : $0.2852
Target : $0.2275
SL : $0.3253
#SAND/USDT analysis :
#SAND is currently in an uptrend, forming Higher Highs (HHs) and Higher Lows (HLs) above the 200ema. The price has broken the trendline after bouncing from a support zone. It is expected to maintain its bullish momentum and target previous highs.
TF : 30min
Entry : $0.2958
Target : $0.3076
SL : $0.2888
#SAND Market Analysis
SAND/USDT remains bearish with price hovering near the lower Bollinger Band and RSI sitting close to oversold at 33. MACD confirms downside momentum, reinforcing the weak structure below key resistances around 0.077. Bull case: hold above 0.0717 to target a retest of 0.0755 and possibly 0.0771 resistance. Bear case: lose 0.0717 and risk acceleration toward lower supports. Watch 0.0717 closely for the next directional cue.
---
➖➖➖➖➖➖➖
Bitcoin Bullets® Trading
#SAND Market Analysis
SAND/USDT is in a bearish trend with RSI deep in oversold territory and MACD confirming downside momentum. Price trades near the lower Bollinger Band, signaling potential for a short-term bounce but overall pressure remains. Bull case: hold above 0.0755 to target a retest of 0.0780 resistance. Bear case: break below 0.0755 risks continuation lower, exposing further downside below 0.071. Key level to watch: 0.0755 support.
---
➖➖➖➖➖➖➖
Bitcoin Bullets® Trading
#SAND Market Analysis
SAND/USDT shows a weak bullish structure with price hovering near the lower Bollinger Band and RSI sitting below 50, signaling limited upside momentum. MACD remains bearish, indicating sellers still have influence despite the mild uptrend. Bull case: hold above 0.0765 to target resistance at 0.0797 for a potential bounce. Bear case: lose 0.0755 and risk deeper pullback towards the next support zone. Key level to watch: 0.0765.
---
➖➖➖➖➖➖➖
Bitcoin Bullets® Trading