Что делать если нужно поставить какую-то 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
It's Mid-week!How are we feeling?
It's the third day of the week and a brand new opportunity to smash our financial goals and aspirations.
We hope you're not relenting in your pursuit of success? Keep grinding and keep your eyes laser focused on your goals.
As you continue in the week, avoid distractions and only spend time doing things that add value to you.
Brace up, the week hasn't ended yet!
#Join Our Trading Club👨🏻💻
#✅PropFirmChallenge&Verification
#👨🏻💻FUNDEDAccountManagement
#Join us at Excoincial exchange 2nd year Anniversary on #26 JULY 2020
LIVE AMA🤩📣
DogData CFO
Thomas Melchior
With the support
EXCOINCIAL Team
THE EVENT HOSTED ON AFRICUNIA TV
Facebook:
https://www.facebook.com/africuniatv
Instagram:
https://www.instagram.com/africuniatv
Zoom:
https://zoom.us/j/6331039454
JOIN AMA ON 26TH JULY 2020 AND DO NOT MISS THE CHANCE TO WIN 5 USD!
🐾📣🤩🚀🐾📣🤩🚀🐾📣🤩
Hey, Winners! Prepare to capture your victory with #Vision11.🏆📸
This photographic day, Play, Win, and Smile!💯
#Join the latest contest on #Vision11 with your skilled team, today and win Big!
https://vision11.in/APK/vision11.apk
🚨 You're missing out on the best forex signals out there! The clock is ticking, and these setups won’t wait. Join MENOW to get instant access to the VIP MENTORSHIP channel and take control of your trading before it's too late. Don't let this opportunity slip away! 💥📈
#JOIN NOW & #EARN GOOD
Hiring : Veterinarian
Position: Veterinarian
Location: bisrate gebriel, addis ababa
Type: Full-Time
Requirements:
• Degree in Veterinary Medicine, Animal Science, or Veterinary Science
• Proven ability to handle and care for animals with compassion and expertise
• Excellent communication skills and a strong commitment to client education
Female applicants are encouraged.
contact at +251954297102
#JOIN#Share ማድረጋችሁን አትርሱ👇👇
@vet_opportunities
@vet_opportunities
Рискованные инвестиции японских институтов развития
Японский фонд инфраструктурных инвестиций и городского развития (JOIN) зафиксировал совокупные убытки за 10 лет работы в размере 632,7 млн долл, из которых практически половина (276,3) млн долл. приходится на неудачный проект создания сети скоростных железных дорог типа «синкансэн» в штате Техас.
В рамках проекта предполагалось строительство высокоскоростного железнодорожного сообщения между Далласом и Хьюстоном в штате Техас. Финансирование было выделено американской компании Texas Central Corp.
Курирующее фонд Министерство земли, инфраструктуры, транспорта и туризма Японии проводит проверку обстоятельств принятия решения о выделении столь значительных средств в обход базовых принципов фонда.
Основной принцип государственно-частных фондов заключается в том, что японские компании являются основными инвесторами, а правительство берет на себя риски, вкладывая средства таким образом, чтобы они лишь дополняли частные инвестиции.
В случае с со строительством линии «синкансэн» в Техасе, государственный фонд JOIN стал единственным инвестором, частные японские компании в проекте вообще не участвовали.
Ранее JOIN потерял порядка 113 млн долл. в Мьянме, где проект был заморожен после правительственного переворота, а банкротство транспортного проекта в Бразилии обошлось еще в 50 млн долл.
Все эти расходы лягут на плечи японских налогоплательщиков. В результате все громче звучит вопрос о целесообразности сохранения подобного рода убыточных государственных фондов.
#Япония#JOIN#инвестиции#инфраструктура
Opportunity for Women Entrepreneurs!
The Bayer Foundation Women Entrepreneurs Award is back! This year, we're selecting 15 women founders in health and food security to join a six-month accelerator focused on one thing: building
investor readiness.
Powered by Impact Hub Network, the program is open to revenue-generating ventures across Asia, Latin America, Africa and the Middle East.
Apply by April 13th, 2026: bayerfoundation-wea.com
#JOIN#Share ማድረጋችሁን አትርሱ👇👇
@vet_opportunities
@vet_opportunities
@vet_opportunities
@vet_opportunities