Что делать если нужно поставить какую-то 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
Lookonchain | ꘜ
Taking advantage of the market drop, the fresh wallet 0x2A92 bought another 30,069 $ETH($138.46M).
Over the past 2 days, this fresh wallet has withdrawn a total of 53,434 $ETH($242.34M) from #Kraken.
https://intel.arkm.com/explorer/address/0x2A9292f147765846472382392be99C175e1e4139
Lookonchain | ꘜ
Pumpfun(@pumpdotfun) deposited another 86,254 $SOL($16.22M) into #Kraken 6 hours ago instead of buying back $PUMP.
They have deposited a total of 3.93M $SOL($715.5M) to #Kraken at $182 and sold 264,373 $SOL for 41.64M $USDC at $158.
https://solscan.io/account/DM7aP6Edf2Ug7veSJ2STXjyMgbGPLSGKnhEQdTKePNne#transfers
Lookonchain | ꘜ
A newly created wallet "0x2A92" withdrew 23,365 $ETH($104M) from #Kraken in the past hour.
https://intel.arkm.com/explorer/address/0x2A9292f147765846472382392be99C175e1e4139
#KRAKEN
Nasdaq и Kraken готовят токенизацию акций
Nasdaq объявила о запуске дизайна «токена акции», где токен будет напрямую связан с официальным реестром акционеров: перевод токена = перевод самой акции, с сохранением прав голосования и корпоративных действий.
Параллельно Nasdaq договорилась с Payward (материнская компания Kraken) о «шлюзе», который позволит перемещать токенизированные акции между регулируемой инфраструктурой и публичными блокчейнами, сохраняя права эмитента, комплаенс и целостность цены.
План: сделать решение рабочим и открыть дополнительные сервисы для эмитентов в первой половине 2027 года.
JUST IN : 🚨
💰 Bitcoin OG Owen Gunden seems ready to dump all of his 11K $BTC($1.12B).
he moved his remaining 3,549 $BTC($361.84M) with 600 $BTC($61.17M) already deposited to #Kraken.
4 wallets combined withdrew 32,880 $ETH worth $70.03M from #Kraken.
All these wallets were created 113 days ago, at the same time.
Addresses:
- 0x5b4A6744483948f393e6D6C6C181Ce0a4e87F5bB
- 0xd86536E111221306D34ac45Ad2Bda4b69d1dDc44
- 0x07A5D26ac82d28D33b423Fe4BF575028B6257245
- 0xf15A1F564669d29045D50698778DD7dFA1e1D07a
https://x.com/OnchainLens/status/2039512122884034980
Follow @onchainlens for more onchain updates
A wallet linked to Forward Industries withdrew 4,648 $ETH worth $9.95M from #Kraken.
https://intel.arkm.com/explorer/address/0xb0e8E4F2CE189D9670a462281504a008DefEbA2d
https://x.com/OnchainLens/status/2036338154974879803
Follow @onchainlens for more onchain updates
The whale "0x8E3" continues to withdraw $ETH from #Kraken. In the past 4 days, the whale has withdrawn 73,806 $ETH worth $152.94M https://intel.arkm.com/explorer/address/0x8E34dFb6b5aF9ae7bAF421f5C67E2ce2FA964170 https://x.com/OnchainLens/status/2032269310341873669…
The whale "0x8E3" continues to withdraw $ETH from #Kraken.
In the past 4 days, the whale has withdrawn 73,806 $ETH worth $152.94M
https://intel.arkm.com/explorer/address/0x8E34dFb6b5aF9ae7bAF421f5C67E2ce2FA964170
https://x.com/OnchainLens/status/2032269310341873669
Follow @onchainlens for more onchain updates
A whale withdrew 44,889 $ETH worth $91.76M from #Kraken and moved it to 2 new wallets.
Address: 0x8E34dFb6b5aF9ae7bAF421f5C67E2ce2FA964170
https://x.com/OnchainLens/status/2031540628983890302
Follow @onchainlens for more onchain updates
A whale "0x257" sent all 6,983 $ETH ($13.51M) into #Kraken after holding it for over 2 years.
Address: 0x2574278054127235779c19a148C5c0Be6B396023
https://x.com/OnchainLens/status/2025983373295124559
Follow @onchainlens for more onchain updates
A whale has deposited 1,536 $ETH ($3.07M) into #Kraken after holding it for 3-4 years, making a profit of $1.95M
The whale initially withdrew 2,747 $ETH ($3.22M) from #Kraken.
Address: 0xbd29cac3b36f2d5d20f45a3946458787bd329db0
https://x.com/OnchainLens/status/2023051775209853391
Follow @onchainlens for more onchain updates