Что делать если нужно поставить какую-то 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
New hidden Gem 💎 ClownFi 🤡
Ticker: $Clown
A trading token that generate profit. Moon is just a matter of time.
Airdrop Pool: 5M $CLOWN 💰
Eligibility:
✅ Follow $CLOWN on X b4 5th Mar @clownfitoken
✅ Join Telegram 👉https://t.me/+R_ZoGK8h9501ZDE1
✅ RT the pinned tweet & comment your BEP20 wallet address
🔒 Available on PancakeSwap
🔗 SC: 0xc5EB040Ad6C58B4a67d5730E3765365676BbcB67
Website: https://sites.google.com/view/clownfi-token/tokenomics
Trades tracker: https://docs.google.com/spreadsheets/d/1SU3gRRl960muulkmhqX2QvzWxK12LjoZ-qIgzif4ios/edit?gid=969882748#gid=969882748
Token Vesting: https://app.uncx.network/lockers/token/chain/56/address/0xc5eb040ad6c58b4a67d5730e3765365676bbcb67
LP Lock: https://app.uncx.network/lockers/manage/lockers-v2?service=edit&locker=0xc765bddb93b0d1c1a88282ba0fa6b2d00e3e0c83&pool=0x7ef43Edf277e0c417a57bF3618B7A50365133841&lock=0&index=0&wallet=0x7E6adB88AE7E55f47cA768A5bEc23f7B83f13AD1&chain=56
🕒 Distribution on 19 Mar—no bots, no dumpers 🚫
#CLOWN#CryptoAirdrop#BNB#CryptoLaunch
New Airdrop Alert!
⚡️Airdrop: 🔥ChimpX Airdrop🔥
Reward Pool:💵HOOTs POINTS💵
Referral: Yes
Rate: ⭐️⭐️⭐️⭐️ (4/5)
How to Join 👇
💎Visit the Airdrop page.
💎Complete the simple tasks.
💎Invite friends for earn extra rewards!
🌐 Claim Now 👉https://freecoins24.io/airdrops/chimpx-airdrop/
Which Airdrop are you claiming next? Share below!
#CryptoAirdrop#FreeCrypto#Airdrop#Crypto#Web3#Freecoins24
New Airdrop Alert!
⚡️Airdrop: 🔥MemeX Airdrop🔥
Reward Pool:💵N/A💵
Referral: Yes
Rate: ⭐️⭐️⭐️⭐️ (4/5)
How to Join 👇
💎Visit the Airdrop page
💎Follow instructions and verify accounts!
💎Create, launch, and trade your own meme coins to earn future rewards!
🌐 Claim Now 👉https://freecoins24.io/airdrops/memex-airdrop/
Which Airdrop are you claiming next? Share below!
#CryptoAirdrop#FreeCrypto#Airdrop#Crypto#Web3#Freecoins24
🔥Airdrop – SQLegends (Listing) ✅
💠Reward: Share from 30,000 SQL tokens (~$25 each for 500 winners) + Bonus for Top 100 Referrals
☀️Airdrop Link :- Click Here
⚙️How to Participate?
♦️Follow their official Twitter account
♦️Join their Telegram Channel
♦️Submit your BSC wallet address
♦️Complete all tasks listed on the airdrop page
♦️Earn extra rewards by being in the Top 100 referrals
📌 About StakeQuest Legends:
A gamified platform where players earn rewards via quests, celebrating its listing with SQL token giveaways. 🚀
🌐Website: https://stakequestlegends.com
🗓Distribution Date: October 3rd
®Note - Please do your own research (DYOR) before joining to any airdrops project, also airdrop is 100% free. Don't send any fee or penny for receiving airdrop tokens.
#SQL#CryptoAirdrop#StakeQuest#Giveaway
🔥Airdrop – XpunkLabs (XPUNK Token) ✅
💠Reward:Get 100 XPUNK tokens absolutely free (worth ~$10) just by completing simple tasks
☀️Airdrop Link :- Click Here
⚙️How to Join?
♦️Follow theirTwitter Account
♦️Join theirTelegram Channel
♦️Submit your Metamask wallet
♦️For 500Random Lucky Winners
♦️Top 100 referrers get extra XPUNK tokens
🌐Website: https://xpunklabs.com
📈Listed on:MEXC, Coingecko
📅 Distribution: August 31st
®Note - Please do your own research (DYOR) before joining to any airdrops project, also airdrop is 100% free. Don't send any fee or penny for receiving airdrop tokens required
#XpunkLabs#XPUNK#Airdropcomic#CryptoAirdrop#MEXC
🔥 Bitget x PublicAI — CandyBomb Event ✅
💠Reward:Grab a share from1,142,000 $PUBLIC + 185,000 $PUBLIC for 650 random winners
☀️Join Now :- Click Here
⚙️How to Participate?
♦️Follow@bitgetglobal & @PublicAI_
♦️Quoterepost with #PUBLIClistBitget
♦️Submit your Bitget UID & X username
♦️Complete all tasks to receive rewards
📌About PublicAI:
PublicAI (PUBLIC) is officially listed on Bitget CandyBomb Trade or deposit to grab your share of over 1.1M $PUBLIC and join 650 lucky winners in the prize pool. 🚀
🚨 Tip:Early participation increases your winning chances act fast
® Note:This campaign is 100% free. No fees required. Please DYOR before participating.
#Bitget#PublicAI#CryptoAirdrop#CandyBomb#Giveaway
🚀 Binance Alpha Opens Mystery Box Airdrop Featuring AOP, REKT, and CLO
Key TakeawaysBinance launches Alpha Mystery Box airdrop.Reward pool includes AOP, REKT, and CLO tokens.Users need ≥240 Alpha points to claim; costs 15 points per claim.Rewards vary by tier and are distributed first-come, first-served.Binance Alpha Mystery Box Airdrop Goes LiveBinance Wallet has opened its Alpha Mystery Box airdrop, with rewards drawn from three projects:Ark of Panda (AOP)Rekt (REKT)Yei Finance (CLO)Eligible users can claim the airdrop via the Alpha event page.Eligibility and Claim RequirementsTo participate:Users must hold at least 240 Alpha pointsEach claim consumes 15 Alpha pointsEach user can claim onceRewards must be confirmed within 24 hours, or eligibility will be forfeited.Reward Structure and DistributionParticipants are randomly assigned to different reward tiers, receiving one of the following:AOP: 715 / 860 / 2860 tokensREKT: 192,307,700 / 230,769,230 / 769,230,770 tokensCLO: 335 / 400 / 1335 tokensAll rewards are distributed on a first-come, first-served basis.
#Binance#AlphaMysteryBox#Airdrop#AOP#REKT#CLO#AlphaPoints#Crypto#Rewards#YeiFinance#ArkOfPanda#CryptoAirdrop#BinanceWallet