Что делать если нужно поставить какую-то 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
Did you know that you can swap $XCH — the Chia Network's native coin — in Tangem?
There's no need for any external exchanges! Swap any crypto for #Chia in Tangem Wallet via our simple and secure interface designed especially for crypto swaps through several third-party providers.
Swap now! 🌱
_
Tangem AG provides only hardware wallets and non-custodial software solutions for managing digital assets. Tangem is not regulated as a financial services provider or cryptocurrency exchange. Tangem does not hold, custody, or control users’ assets or transactions. Crypto transaction services are provided by third-party providers. Tangem provides no advice or recommendation on use of these third-party services.
Вы все находитесь в венчуре.
Ваших денег в Crypto не существует.
Их нет.
Просто нет.
Это 0.
Не важно речь про #ETH#CHIA#FLIP ….что угодно.
Любое дерьмо.
Этого нет.
Даже в #TWT их нет.
#TWT - это 0.
Это ZERO.
Ровное ZERO.
Это сказка и вымысел.
Когда вы смотрите в ваш портфель и там написано 80 000$, на самом деле - это ровный 0$.
#BTC частично равняется чему-то, но только в составе ETF.
Если у вас есть нормальные западные ETF или недвижимость, не требующая глубокой операционки - тогда да.
Частично у вас есть #BTC и даже частично Stable.
Особенно если это USDC.
Но в остальном - смиритесь с тем, что все ваши цифры Crypto - фикция.
До того момента пока они, как минимум, не ушли в твердую валюту или домик в деревне с козами.
Формула:
Мой портфель 0 + Я делаю ставку = Попытка оформить Gen Wealth
Находясь в венчуре вы принимаете правило игры “мой портфель - 0” ради того, чтобы получить Generational Wealth.
Сделать так, чтобы идея в портфеле взорвала ваш финансовый мир и подарила свободу.
Для каждого эта цифра индивидуальна.
Кто-то скажет про 10 млн $ в Испании, из которых 7 уйдут в консервативный портфель.
Кто-то хочет жить на своей ферме под Вологдой и нужно 500к$.
Но суть одна.
Вы делаете ставку.
Ваша ставка должна носить характер ДИЗРАПТА.
Ваша ставка должна иметь потенциал закрепить х10-х100, минимум.
Ваша ставка должна, по возможности, обрести докупки.
Если ваша ставка отличается от подобных параметров - вы просто теряете время.
В то время как в реальном мире можно заработать куда большие деньги.
Повторюсь, я про Gen Wealth.
Я не про выживание на Crypto деньги.
Выживать можно и на деньги дворника.
В этом нет ничего зазорного.
Когда вы приходите в венчур, цель не может быть меньше, чем тотальная смена финансового положения.
Когда все начнется - у вас останется единственная мысль “1$ был же вот здесь, прямо здесь, я знал, что так оно и будет, почему я так мало старался ради докапитализации”.
This is how it works
Dream bigger
Be ready
#TWT