Что делать если нужно поставить какую-то 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
⏺#FLOKI is trying to break up the bullish flag pattern on Daily time frame, after breakout and retest we expect another pump 🚀
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
⏺#FLOKI appears to have developed a cup and handle pattern, a technically bullish formation. 🐋
💫A strong confirmation of bullish sentiment would be achieved through a decisive breakout above the designated horizontal resistance. Conversely, a rejection at this level could signal an impending correction.
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
Stake and Earn with FLOKI!
Users can now stake their $FLOKI tokens, and earn $TOKEN, with TokenPocket!
👉https://staking.floki.com
Easy Access: #Floki Staking is now integrated with the TokenPocket wallet, and you can find it on the Trending DApp List on the Ethereum network.
👉 Learn More: https://tokenpocket.pro
We are excited to announce our latest strategic partnership with Floki 🔥
What started as a meme has developed into an industry-leading utility project. Floki's innovative ecosystem offers a 3D NFT Metaverse, DeFi utilities, a crypto education platform, NFTs, a merchandise store, and more.
As part of this partnership, we have purchased $5 million worth of FLOKI tokens from the Floki Treasury. We believe that this partnership will drive the acceleration of Floki adoption in institutional circles and unlock greater growth of this innovative ecosystem.
We're looking forward to your continuous success in this space! 🫡
The future is #Floki! ✨
Find out more here.
Opened a short #FLOKI.
The asset tested $0.000326976, but was unable to go above it, after which market participants actively fixed positions, and pressure from sellers began.
The bears pushed the price and thereby broke through the ascending channel into shorts, with subsequent consolidation under it. Most likely this is not the end of the corrective movement and the coin will show a further decline.
Trading volumes have fallen sharply, which means buyers are looking for more profitable entry points and are not yet ready to take on positions. I assume the price will move to the area of $0.000128717 - $0.000138660.
Goals: $0.000156924 - $0.000148628 - $0.000138660.
Stop: 0.000182642$