Что делать если нужно поставить какую-то 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
설날 맞이 UXLINK 한국인 홀더 이벤트
🔥 $10,000 (100 USDT x 100명)
📅 1/27~ 2/10 16:00까지
#UXLINK 홀더 인증, 응원글 및 로고 작성 후 #UXLINKEVENT 태그 달아 올리면 끝!
💡 홀더 인증하고 새뱃돈 가져가자!
👉 홀더라면 참여하지 않을 수 없는 이벤트!
https://forms.gle/rntCL5CYSsDRGwgE7
#UXLINK#UXLINKEVENT#CryptoEvent#FreeRewards
UXLINK"를 찾아라 이벤트
🔥 5,000 USDT + 100,000 UXUY 쏜다! (700만 원 상당💸)
📅 11/21 ~ 12/20
#UXLINK 광고 찍고 #UXLINKEVENT 태그 달아 올리면 끝!
💡 UX Wallet 제출하면 당첨 확률 UP
👉 지금 참여 안 하면 NGMI!
https://forms.gle/mwdapWAhV2WDcmFF7
#UXLINK#UXLINKEVENT#CryptoEvent#FreeRewards
🚀Exciting News for SLEXians! 🚀
✨We're thrilled to announce that the SLEX platform will be a part of the outstanding Token2049 event in Singapore on September 13-14! 🌏
🌐Token2049 is a premier crypto and blockchain conference that brings together industry leaders, innovators, and enthusiasts worldwide. It's a hub for networking, knowledge-sharing, and staying ahead of the latest trends in the crypto space.
👥We invite our community members to join us at the event, either in person or virtually, to learn more about the SLEX platform features and engage with fellow crypto enthusiasts.
💫Save the dates, and let's make this event memorable together!🗓️
#SLEX#Token2049#CryptoEvent#CryptoTrading#Blockchain#Singapore
Email | Telegram | Reddit | Facebook | Instagram | Medium | Linkedin | Twitter
🚀 GENIUS Airdrop Opens on Binance Alpha: 240 Tokens for Users With 230+ Alpha Points
According to Binance Wallet's post on X, Binance Alpha will debut Genius Foundation (GENIUS) on April 13, 2026, at 11:00 UTC, making it the first platform to list the token. Users holding at least 230 Binance Alpha Points may claim a 240-GENIUS airdrop on a first-come, first-served basis; claiming consumes 15 Alpha Points. If the reward pool remains undistributed, the points threshold automatically drops by 5 every 5 minutes. Claims must be confirmed on the Alpha Events page within 24 hours or are forfeited.
#GENIUSAirdrop#BinanceAlpha#GeniusFoundation#Airdrop#Crypto#AlphaPoints#Binance#Token#Blockchain#CryptoEvent
🚀 Binance to Launch RateX Trading Competition with Token Rewards
According to the announcement from Binance, the platform is set to introduce the RateX Trading Competition on Binance Alpha. This event will take place over two distinct promotion periods, offering participants the opportunity to earn exclusive token rewards. The first promotion period is scheduled from 2026-04-09 13:00 (UTC) to 2026-04-16 13:00 (UTC), followed by the second from 2026-04-16 13:00 (UTC) to 2026-04-23 13:00 (UTC). Participants will be ranked based on their total purchase volume of RateX (RTX) tokens during each period. The top 2,040 users in each period will share a pool of 61,200 RTX tokens, with each eligible participant receiving 30 RTX tokens.
Participation in the competition requires trading through Binance Wallet (Keyless) or Binance Alpha, as third-party dApp transactions are excluded. Only cumulative purchases will count, with no volume caps imposed on participants. However, token bridging transactions are not eligible. Notably, trading volume from Alpha-to-Alpha token pairs will not contribute to Alpha Points or competition rankings, effective from 2025-06-17 00:00 (UTC). Rewards will be distributed in RTX tokens and must be claimed by eligible users before 2026-05-07 13:00:00 (UTC). Unclaimed rewards within 14 days will be forfeited.
To participate, users must click 'Join' on the Binance App event page, ensuring their trading volume is counted. The latest version of the Binance App and a backed-up Binance Wallet (Keyless) are required. Rankings will be calculated automatically post-promotion, and winners can claim rewards via their Binance Alpha accounts or Binance Wallet (Keyless). Binance reserves the right to amend the terms of the competition at its discretion.
#Binance#RateX#TradingCompetition#TokenRewards#CryptoEvent#BinanceAlpha#RTX#TokenDistribution#BinanceWallet#TradingVolume#CryptoPromotion#TokenBridging#CompetitionRanking#AlphaPoints#BinanceApp#Keyless