Что делать если нужно поставить какую-то 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
🇿🇦Парк слонов Тембе🐘
Парк был создан в северо-восточной части Южной Африки в 1983 году для защиты слонов, мигрировавших между ЮАР и Мозамбиком. 🌍
С 1991 года парк открыт для посетителей — сегодня здесь обитает около 250 самых крупных в мире слонов!🏞
Если вы любите сафари, в парке сможете увидеть и других представителей «большой пятёрки»: 🦁 львов, 🐆 леопардов, 🦏 носорогов и 🐃 буйволов.
🎥 Видео в режиме реального времени:
👉https://www.youtube.com/watch?v=VUJbDTIYlM4
#ЮАР#Природа#Сафари#Африка#ПаркСлонов#BigFive
🦁Kruger National Park, located in the northeast of South Africa, is the country’s oldest national park (founded 🗓in 1926) and one of the largest national parks in the world 🌍
To fully experience the park, visitors usually spend several days there. That is why campsites are located directly inside the park ⛺️
There are nine entrance gates, all of which close at night, as it is dangerous to remain in the park after dark without a guide 🌙⚠️
🐘🦏🦬🦁🐆
Kruger National Park is home to:
• about 12,000 elephants,
• 5,000 rhinos,
• 2,500 buffalo,
• 1,500 lions,
• 1,000 leopards,
• and hundreds of bird species🐦
📹Video: 10 minutes with the inhabitants of Kruger National Park
https://www.youtube.com/watch?v=ZnbsthIPMiw
#Nature#Animals#KrugerNationalPark#SouthAfrica#BigFive#Wildlife#Africa
🦁Национальный парк Крюгера на северо-востоке ЮАР — старейший национальный парк страны (основан 🗓 в 1926 году) и один из крупнейших национальных парков мира 🌍
Чтобы по-настоящему прочувствовать масштаб и атмосферу парка, сюда приезжают на несколько дней. Именно поэтому прямо на его территории работают кемпинги ⛺️
Всего у парка 9 въездов, которые закрываются на ночь — находиться здесь после захода солнца без проводника опасно 🌙⚠️
🐘🦏🦬🦁🐆
В Крюгере обитают:
• около 12 000 слонов,
• 5 000 носорогов,
• 2 500 буйволов,
• 1 500 львов,
• 1 000 леопардов,
• а также сотни видов птиц🐦
📹Видео (10 минут с обитателями парка Крюгера):
https://www.youtube.com/watch?v=ZnbsthIPMiw
#Природа#Животные#НациональныйПарк#Крюгер#ЮАР#BigFive#Африка
💴South African rands are, arguably, among the most beautiful banknotes and coins in the world 🌍✨
South African banknotes feature the iconic “Big Five” animals 🐘🦁🦏:
• R10 — rhinoceros
• R20 — elephant
• R50 — lion
• R100 — buffalo
• R200 — leopard
The reverse side of each note features Nelson Mandela, honoring his legacy as a symbol of democracy, freedom, and national unity in South Africa ✊🏿🇿🇦
#SouthAfrica#Currency#rands#BigFive#NelsonMandela#Heritage#Culture
🐆Inverdoorn Game Reserve – a true safari escape just 2.5 hours from Cape Town! 🐾
🌿 Located in the semi-arid Karoo region, Inverdoorn offers unforgettable encounters with the Big Five and cheetah conservation experiences.
🌍 Take a guided game drive, stay overnight in stylish lodges, and enjoy the stunning silence of the wild. 🌄
📍 Perfect for a weekend getaway into nature’s heart.
🎬 Video: https://www.youtube.com/watch?v=31OzaX7N5TA
#SouthAfrica#Safari#Inverdoorn#Wildlife#CapeTownTrips#GameReserve#BigFive
🐘А вы знали, что…
слон — один из представителей знаменитой африканской «Большой пятёрки»?
🐾 Этот термин появился у охотников на крупную дичь и обозначал пять самых опасных животных при охоте пешком в Африке.
В легендарную пятёрку входят:
слон, лев, леопард, африканский буйвол и носорог🦁🐆🦏
#BigFive#Африка#ЮАР#Слон#ДикаяПрирода
_______________
🐘Did you know?
The elephant is one of Africa’s famous Big Five.
🐾 The term Big Five was coined by early big-game hunters and refers to the five most dangerous animals to hunt on foot in Africa.
The iconic group includes the elephant, lion, leopard, African buffalo, and rhinoceros🦁🐆🦏
#BigFive#SouthAfrica#Africa
#Elephant#Wildlife
🐆Inverdoorn Game Reserve — сафари под Кейптауном! 🇿🇦
🌿 Всего в 2,5 часах езды от Кейптауна находится заповедник «Инвердурн» — уникальное место в полупустыне Кару, где можно увидеть Большую африканскую пятёрку, поучаствовать в программах по защите гепардов и насладиться настоящей дикой природой.
🌍 Стильные лоджи, тишина саванны и профессиональные гиды сделают поездку незабываемой. 🌄
📍 Идеальный вариант для сафари на выходные.
🎬 Видео: https://www.youtube.com/watch?v=31OzaX7N5TA
#ЮАР#Сафари#Inverdoorn#ДикаяПрирода#ПутешествияЮАР#BigFive#Гепард
🇿🇦Tembe Elephant Park🐘
The park was established in the north-eastern part of South Africa in 1983 to protect elephants migrating between South Africa and Mozambique. 🌍
It opened to visitors in 1991 and is now home to about 250 of the largest elephants in the world. 🏞
If you’re into safaris, you can also spot the rest of the Big Five — 🦁 lions, 🐆 leopards, 🦏 rhinos, and 🐃 buffalo.
🎥 Live video:
👉https://www.youtube.com/watch?v=VUJbDTIYlM4
#SouthAfrica#Nature#Safari#BigFive#Elephants#Tembe#Wildlife#Travel#Africa