Что делать если нужно поставить какую-то 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
#IDEX/USDT analysis :
#IDEX is currently in a downtrend and trading below the 200 exponential moving average (EMA). The price is encountering resistance from the 200 EMA and the resistance zone. It is anticipated to decline from there and test a lower low.
TF : 2h
Entry : $0.02875
Target : $0.02650
SL : $0.03024
#IDEX/USDT analysis :
#IDEX has recently broken out above the resistance zone and the 200 EMA. The price is likely to continue its bullish momentum and test higher levels.
TF : 15min
Entry : $0.03760
Target : $0.03894
SL : $0.03672
📊#IDEX pumped with a good volume from the horizontal support. Currently, it is facing the descending trendline, MA 100 and the Ichimoku cloud resistance. We've to keep an eye on a solid breakout of the Ichimoku cloud, which would confirm the upward direction.👀
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
📊#IDEX is forming a descending triangle and price is heading toward a decision area. The support is $0.0469-$0.0485 area and a break below this support area will bring a heavy sell-off. The resistance is $0.052-$0.0522 area and we will only open a long position after a break above the resistance area.🚀
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
Эксклюзивно про Т-90МС: с выставочного подиума – в бой
Новейший Т-90МС, который в феврале этого года был звездой международной выставки#IDEX в Абу-Даби, уже выполняет боевые задачи в составе российских танковых подразделений.
Машина, которую мы впервые показали за рубежом, была доработана с учётом богатейшего опыта СВО. И в наши войска была отправлена практически в той же комплектации, что и демонстрировалась на выставке в ОАЭ. Изменение коснулось цвета: с «выставочного» песочного камуфляжа танк перекрасили в стандартный армейский зеленый.
Ко Дню танкиста публикуем эксклюзивное видео всего этого пути!
В этом ролике – вся история: от транспортировки танка на выставку, его работы на стенде Рособоронэкспорта и до возвращения домой, перекраски и отправки героям-танкистам.
#КонцернУВЗ#Т90