Что делать если нужно поставить какую-то 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
🍿#DRIFT Американская юридическая фирма Gibbs Mura объявила о начале расследования по поводу возможного коллективного иска в связи с взломом Drift Protocol. Расследование будет сосредоточено на том, приняла ли Circle своевременные меры по заморозке средств. Фирма заявила, что в настоящее время собирает информацию от пострадавших инвесторов и оценивает целесообразность подачи иска против Circle за непринятие действий по предотвращению потери средств.
#DRIFT запампился на >100% на новости. С утра он не покидает топы по спотовым и фьючерсным покупкам на всех CEX. Примечательно, что крупные покупки начались лишь спустя несколько часов после опубликования новости в боте в 2:25 по мск.
📊Chart👈
🏴☠️#DRIFT The fallout from the Drift incident continues to expand, with the number of affected protocols growing from 11 to 20, including PiggyBank, Perena, Vectis, Valeo, Amp Pay, Loopscale, Prime Numbers Fi, Gauntlet and Expent. Prime Numbers Fi is estimated to have lost >$10 million. Wublockchain
💸#DRIFT Проект Drift Protocol привлекает$127,500,000 от Tether для восстановления средств пользователей после взлома.
Еще $20,000,000 помощи выделят другие партнеры.
Ранее: взлом на $285m
Crypto Headlines
#DRIFT
Drift: атака 1 апреля готовилась около полугода и, вероятно, связана с северокорейской группой
Drift сообщила, что продолжает расследование атаки вместе с правоохранителями, Mandiant и ончейн-специалистами. Все оставшиеся функции протокола заморожены, а скомпрометированные кошельки удалены из multisig.
По предварительным выводам, атака готовилась с осени 2025 года.
Злоумышленники выдавали себя за торговую фирму, знакомились с участниками команды на крупных криптоконференциях, вели с ними рабочие обсуждения, создавали общий трек взаимодействия и даже завели на Drift более $1 млн собственного капитала через Ecosystem Vault.
Предполагаемые векторы компрометации:
— один из участников мог заразить устройство после клонирования репозитория, присланного как якобы фронтенд для vault
— второй мог установить через TestFlight приложение, которое выдавали за кошелек
— отдельно Drift допускает связь с известной уязвимостью в VSCode и Cursor, при которой открытие файла или репозитория могло запустить вредоносный код без предупреждения
По оценке Drift и команды SEAL 911, с атакой могут быть связаны те же участники, что стояли за взломом Radiant Capital в октябре 2024 года. Речь идет о группе, которую ранее связывали с UNC4736 / AppleJeus / Citrine Sleet, то есть с инфраструктурой, ассоциируемой с КНДР.
Drift отдельно подчеркивает важный момент: люди, которые лично выходили на связь с командой, скорее всего, не были гражданами КНДР. По версии проекта, для офлайн-контактов могли использоваться посредники с полностью проработанными легендами, карьерной историей и профессиональными профилями.
#DRIFT
Drift взломали через фейковый токен и отключение лимитов на вывод
Атакующий заранее выпустил 750 млн фейковых CVT, создал пул на Raydium с ликвидностью всего около $500 и неделями прогонял через него сделки, чтобы собрать историю цены. Затем через скомпрометированный админский ключ Drift токен добавили как новый spot market.
В той же транзакции лимиты на вывод по USDC и еще четырем рынкам подняли до 500 трлн, фактически отключив защиту. После этого злоумышленник завел 785 млн CVT как залог, нарисовав себе около $785 млн обеспечения при реальной ликвидности пула в районе $700.
С этим фейковым залогом за 12 минут вывели активы почти из всех хранилищ:
— 66,4 млн USDC
— 42,7 млн JLP
— 23,3 млн MOODENG
— 5,6 млн USDT
— 5,2 млн USDS
— 2,6 млн JUP
— 583 тыс. RAY
— 477 тыс. WETH
Дальше средства начали выводить и дробить:
— 103 млн USDC отправили на один адрес
— 42,7 млн JLP сожгли через Jupiter Perps
— остальное обменяли в SOL и раскидали по нескольким кошелькам
#drift
Немного о проекте над которым сейчас работаю в рамках Blockchain Sports Drift - это дрифтовый автопилот. Я как всегда себе верен и для начала создал довольно функциональный инструмент с помощью которого можно отображать телеметрию машины, делать записи и воспроизведения, работать над траекторией и контролировать обучение и всё через юзер-френдли интерфейс. Система работает как с симуляцией Assetto Corsa так и нашей специально подготовленной машиной. Пока я использую традиционные RL алгоритмы, но стараюсь делать платформу гибкой для расширения и использования альтернативных решений в бедующем.
И как врачи и алхимики древности плоды своих исследований я испытываю на себе) Также со мной в испытаниях в роли пилота Мак Кравец, контролирует большую зеленую кнопку (в нашем случае она зеленая) и страхует нас.
И конечно, развитие это проекта это результат совместной и слаженной работы очень грамотных инженеров и менеджеров. По мере развития проекта буду рассказывать о нем под тегом #drift