Что делать если нужно поставить какую-то 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
Welcome to the Official TRUELAB GAMES Telegram Channel!
A NEW ERA IS COMING!
This channel will be your VIP pass to the most thrilling adventures TrueLab has in store.
Here’s what to expect:
🎮 Sneak peeks into works-in-progress and behind-the-scenes action, where pixels meet passion.
🏆 Exclusive heads-up on upcoming tournaments with tips to keep you ahead of the game.
🌐 First-hand announcements about promotions to enhance your TrueLab gaming experience.
🔥 Early alerts on new additions to our TRUE line of products – be the first to know and experience!
Join the conversation, share your thoughts, and stay tuned – the future of TRUE is now, and it’s #TRUEtotheCore.
🔗 Stay connected. Stay informed. Stay TRUE.
#TrueLabNewEra#GameOn
🎮 Attention Gamers! 📸 Big 200 Go!Bots giveaway!! Capture Epic Moments and Win Big! 🏆
📢 Get ready for the ultimate gaming challenge! Introducing the 🌟 EA Games Screenshot Challenge 🌟 brought to you by Health Hero. 🎉 Show off your gaming skills, share your most jaw-dropping EA Games screenshots, and earn 💪 Health Hero rewards!
Starts: Tuesday, June 20, 2023
Ends: Tuesday, June 23, 2023
📸How to participate? Visit https://zealy.io/c/healthhero-7008/questboard to get your quests started!
📢 Don't wait! Grab your gaming gear, start snapping those jaw-dropping screenshots, and let the gaming magic begin! 🚀✨
📢 Disclaimer: This challenge is purely for gaming enthusiasts and is not endorsed or affiliated with EA Games. It's all about celebrating our shared love for gaming and having a blast together!
🎮📸#GamingHeroes#EAGameScreenshotChallenge#HealthHero#CaptureTheMoment#LevelUp#GameOn
🇺🇿◽️2️⃣2️⃣2️⃣
Level Up Your Life!
Bored? Feeling stuck? ➡️ Level up your LIFE with CHESS! ♟ Our Chess Club isn't just about moving pieces; it's about strategy, friends, & unlocking YOUR potential! 💪
Whether you're a total beginner 👶 or a grandmaster in disguise 🕵️♂️, we welcome ALL skill levels.
What are you waiting for? 🤔
https://tally.so/r/mJQNq7
◽️🔤🔤🔤🔤🔤🔤🔤🔤🔤🔤
🇺🇿Inha yoshlar ittifoqi
Join us on social media
🌐Telegram | 🌐Instagram
#ChessClub#Chess#BoardGames#Strategy#NewMembersWelcome#Fun#BrainPower#GameOn#ChessLife
AI Startup Founder Arrested for Fraud
GameOn co-founder Alex Beckman and wife indicted for fraud in US. Allegedly misused $4M of $125M raised, using funds for luxury purchases, including a home, cars, and wedding. Prosecutors claim Beckman falsified company financials, overstating revenue and creating fake documents. GameOn's operations halted with layoffs after investigation into missing funds. Beckman's claims of acting in company's best interest questioned. Full details on the indictment can be found here.
#AI#Startup#Fraud#Investment#GameOn#Beckman#Technology#Business#News#Legal#Indictment#TechIndustry#Innovation#Data#Investors#VC#Fintech#SanFrancisco#Luxury#FraudulentAccounting
⬆️ С 11 сентября по 30 сентября в компьютерном клубе Net Arena проходит акция — всем новым участникам клуба в микрорайоне Кожухово дарим 2 часа игрового времени в подарок!
🏆 Приходите и наслаждайтесь современными играми на мощных ПК и консолях. Не упустите свой шанс окунуться в мир виртуальных приключений!
📦 Ждем вас в нашем клубе! Приводите друзей и получайте еще больше бонусов!
🔍
Все подробности по телефону +74950808404 и в нашем телеграм-канале: @netarenaclub | ул. Дмитриевского, 1
#NetArena#КомпьютерныйКлуб#Геймеры#Акция#ИгровоеВремя#Кожухово#Игры#ГеймерыРоссии#Киберспорт#Gaming#PlayStation#PCGaming#GameOn