Что делать если нужно поставить какую-то 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
🕵️#Vitalik continues selling $ETH.
In the past 2.5 days, he has sold 3,765 $ETH for $7.08M.
Since Feb 2nd, he has sold 10,723 $ETH for $21.74M at a price of $2,027.
Address: 0xfeb016d0d14ac0fa6d69199608b0776d007203b2
#ETH drop from the support zone might trigger -18% to -20% from the depicted zone, Keep an eye on!!📉
$ETH #ETHUSDT#Vitalik
https://x.com/CryptoBull_360/status/2025739068110487794?s=20
Vitalik Embraces New Milady NFT!
Vitalik Buterin has purchased a Milady NFT and updated his profile picture on X to showcase it. This marks another high-profile acquisition in the NFT space. Read more here.
#Vitalik#Milady#NFT#X#Crypto
📊
🔷⬇️🚨以太坊 基金會 再次出手!鏈上數據 顯示,基金會 近期持續 減持 $ETH 以補充營運資金。
#加密貨幣#區塊鏈#幣圈#以太幣
——— 📊市場情緒觀察 📊———
⚡️曝光新聞👇👇資源搜索群 🖲️👆
💰減持數據一覽:
• 出貨總量: 3,750 $ETH
• 變現總額: 830 萬美元
• 出場均價: $2,214
• 目前國庫餘額: 1,250 $ETH(價值約 277 萬美元)
💡重點分析:
1. 營運支出: 基金會通常在固定週期賣出 ETH 以支付全球開發者薪資及項目資助金(Grants),屬於預期內操作。
2. 逃頂大師再現? 社群始終高度關注 EF 的賣出時機。歷史上 EF 的減持點位常與市場階段性高位重合,本次 $2,214 是否具備參考價值值得深思。
3. 持倉縮減: 隨著國庫中 ETH 直接持倉降至低位,未來基金會可能更傾向於長期財務規劃。
📝原文摘要
The Ethereum Foundation continues to sell $ETH, having sold 3,750 $ETH for $8.3M at an average price of $2,214.
It still has 1,250 $ETH remaining, valued at $2.77M. link
#CryptoNews#Vitalik#行情#鏈上數據
🤣👇
☕️👇 幣圈 区块链新闻
😺👇
Major Unlockings Impacting Crypto Markets
🔑 Over $5M in large unlocks coming in 7 days, affecting tokens like APT, MOVE, and NEON. Total unlocking value surpasses $759M! For more details, visit Tokenomist.
🐦 Vitalik Buterin sells 340B DOG for 5.204 ETH (~$18.9K). Holding 8T DOG valued at ~$483K. Previous sales funded charity. More info here.
💬 Altman confident in AGI development this year.
📄 Buterin's new article on AI regulation, crypto's role in d/acc, and public financing. Read it here.
📈 Metaplanet aims to boost Bitcoin holdings to 10,000 BTC using loans and equity. Current holdings: 1,762 BTC. Full story here.
#Crypto#Unlocks#BTC#Vitalik#AGI#Memecoin#AI#Dogecoin#Altman#Investments#MarketTrends#MetaPlanet#BitcoinHoldings#ETH#MemecoinSales#Charity#PublicFinancing#AIRegulation#dacc#Tokenomist