Что делать если нужно поставить какую-то 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
A whale sent 75 $BTC ($5.08M) and bought 2.067B $PUMP ($4.04M) from #Wintermute in the past 20 hours.
Address: 24BLFjSAcUPPWs8F7nhwthfRPvh5mopNYfu5WXTkLChr
https://x.com/OnchainLens/status/2031221755700981916
Follow @OnchainLens for more Onchain Updates.
The whale "0xFB7" has further bought 10,000 $ETH for $26.36M from #WinterMute.
This brings the whale's holdings to 120,169 $ETH, valued at $294.79M in staking.
Address: 0xFB78AA8F38843629e89951D9db6FdC398d75e0A3
https://x.com/OnchainLens/status/2017765248162488573
Follow @OnchainLens for more Onchain Updates.
The whale "0xfb7" closed a $BTC long position with a loss of $3.7M, withdrew all the funds, and deposited $31.7M $USDC into #Wintermute and bought 10,000 $ETH Later converted it into $stETH, and sent it to another wallet where the whale holds 40,060 $stETH…
$NEIRO (Neiro Ethereum) seems to be in an accumulation phase according to our latest on-chain data:
1/ Whale 0x6ab accumulated 17.7M $NEIRO in the last 7 days at an average price of $0.086.
2/ Whale 0x9Ba bought 17.5M $NEIRO on Sept 6 at $0.154. While profitable with $FET, this whale hasn’t fared as well with meme coins.
3/ Whale 0xAB5 accumulated 6M $NEIRO, DCAing over the past month at $0.128, having made good profits with $PEPE in the past.
4/ Whale 0x1ED accumulated 8.6M $NEIRO at $0.116, has sold some without profit, and now holds 5.6M. It has previously profited from $ETHFI, $SYN, and $PENDLE.
5/ Lastly, #Wintermute, a market maker, continues to hold a large amount of 52.97M $NEIRO ($4.97M), ~5.3% of the total supply.
With a market cap still under $100M and recent signs of increased decentralization in the past weeks, will Binance consider listing it on spot after all 🧐?
Details: https://x.com/spotonchain/status/1839596800031998301
Whales/Institutions are accumulating $ETH - A newly created wallet "0xcA0" bought 61,000 $ETH worth $171.15M from #Binance. - The whale "0xFB7" further bought 20,000 $ETH worth $56.13M from #WinterMute and now holds 100,130 $ETH worth $283.79M. Addresses:…
Whales/Institutions are accumulating $ETH
- A newly created wallet "0xcA0" bought 61,000 $ETH worth $171.15M from #Binance.
- The whale "0xFB7" further bought 20,000 $ETH worth $56.13M from #WinterMute and now holds 100,130 $ETH worth $283.79M.
Addresses:
- 0xcA08371f6e9204Dd6927dcc2dB5504EA062b2998
- 0xFB78AA8F38843629e89951D9db6FdC398d75e0A3
https://x.com/OnchainLens/status/2015582948632965245
Follow @onchainlens for more onchain updates
Multisign 0xbba (likely @MakerDAO) deposited the last 628 $MKR ($1.76M) to #Binance via wallet 0x1cc 8hrs ago!
Over the past 4 months, this multisign deposited all 30,971 $MKR to Binance and #Wintermute at ~$2,972 ($92M), causing price dips each time.
While multisign 0xbba is now out of $MKR, another likely multisign 0x7fd of MakerDAO, which once used wallet 0x1cc, may soon unload its current 5,177 $MKR ($15.1M).
Follow @spotonchain and check out the mentioned addresses at:
1. 1. Multisign 0xbba: 0xbba4c8eb57df16c4cfabe4e9a3ab697a3e0c65d8
2. Multisign 0x7fd: 0x7fda46250dbc2eb3a24d11374dd1380ce69e75e4
The whale "0xFB7" has further bought 15,642 $ETH ($36.24M) and 10 $cbBTC ($777.58k) from #WinterMute and #Coinbase. This brings the whale's holdings to 135,822 $ETH, valued at $313.55M. Address: 0xFB78AA8F38843629e89951D9db6FdC398d75e0A3 https://x.com/…
The whale "0xFB7" has further bought 15,642 $ETH ($36.24M) and 10 $cbBTC ($777.58k) from #WinterMute and #Coinbase.
This brings the whale's holdings to 135,822 $ETH, valued at $313.55M.
Address: 0xFB78AA8F38843629e89951D9db6FdC398d75e0A3
https://x.com/i/status/2018123212178239573
Follow @OnchainLens for more Onchain Updates.
A whale withdrew 2,218 $ETH ($6.52M), 37.1M $SKY ($2.36M), and 4,772 $AAVE ($730.36K) from #Kraken 7 hours ago.
The wallet received 519 $ETH ($1.62M) from #WinterMute 19 days ago. In total, it holds 2,738 $ETH ($8.07M).
Address: 0xcd9eb5783e2620762f47bf0a7d09c531225b5507
https://x.com/OnchainLens/status/2005439635170721971
Follow @onchainlens for more onchain updates
The whale "0xfb7" has further bought 10,000 $ETH ($28.9M) from #WinterMute and also sent $58.13M to #FalconX likely to buy more $ETH. The whale now holds 60,098 $ETH, worth $179.22M. Addresses: - 0xfb78aa8f38843629e89951d9db6fdc398d75e0a3 - 0xd4584bf98…