Что делать если нужно поставить какую-то 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
Новый год – это время волшебства, подарков, оживших сказок, самых счастливых эмоций и радостных улыбок. Тысячи разноцветных огней освещают улицы города, наряженные ели, удивительные и необычные украшения создают особую атмосферу новогоднего праздника. В это время каждый может почувствовать себя героем сказки, поверить в волшебство и загадать свои самые заветные желания. Команда отеля дарит каждому гостю волшебную открытку, отправляйте её тому, кого хотите поздравить с праздниками и вместе с открыткой к Вашим друзьям и близким отправится частичка счастья, добра и волшебства!🎄
⠀
#отельпекинмосква#hotelpekingmoscow#pekinghotel#newyear #новыйгод2022#пекинмосква #гостиницамосква
Дорогие, милые дамы,
Команда отеля Пекин поздравляет вас с Международным женским днём!
Желаем вам чудесных дней, наполненных радостными событиями, красивыми словами, любовью и душевностью.
Пусть ваши желания исполняются всё чаще, близкие окружают вас теплом и нежностью, заботой и безграничным вниманием.
Счастья вам, прекрасные дамы, и пусть оно не заканчивается!
Мы всегда ждём вас в отеле Пекин!
#гостиницапекинмосква#пекинмосква#8марта#hotelpekingmoscow#pekinghotel#pekinghotelmoscow
Зима — большая волшебная сказка. В ней три главы и бесконечное число чудес на каждой страничке. В каждом слове этой волшебной истории живёт по маленькому чуду!
Декабрь — «О том, как чувствовать волшебство»
Январь — «О том, как придумать волшебство самому»
Февраль — «О том, что волшебство — в тебе»
⠀
Позволь себе окунуться в мир волшебства, бронируй новогодние каникулы на сайте: www.hotelpeking.ru либо по телефону: +7 495 980 59 95 и получай скидку от 10%💫
⠀
#hotelpekingmoscow#pekinghotel#moscow#newyear#holidays#отельпекинмосква#гостиницапекинмосква
С праздником Великой Победы!
Мирного неба, ясного солнца, доброй жизни вокруг!
Светлая память героям войны и их подвигам!
#9мая#9мая2021#76летпобеды#pekinghotel#hotelpekin#hotelpeking#pekinghotelmoscow
1 июня отмечается Международный день защиты детей!
Задача каждого взрослого - сделать детство счастливым и беззаботным.
А мы #pekinghotelteam делаем все, чтобы нашим маленьким гостям и их родителям было уютно и комфортно в нашем отеле. Для малышей у нас есть:
✅детские кроватки
✅стульчики для кормления
✅игрушки
✅подогреватели и стерилизаторы для бутылочек
✅ванночки для купания и даже горшок!
Все, что нужно для отличного отдыха!
Ждем вас в отеле “Пекин”!
Москва, Большая Садовая, д.5
#hotelpeking#pekinghotel#hotelpekin#pekinghotelmoscow#гостиницапекин#гостиницапекинмосква#отдыхсдетьми#семейныевыходные
Тариф “Привилегии особого выбора” - для тех, кто ценит комфорт класса “люкс” во всем.
Для наших гостей:
✅Проживание в номере категории «люкс»*
✅Ранний заезд, после 11.00
✅Поздний выезд, до 16.00
✅Комплемент от отеля
✅Парковочное место для вашего автомобиля.
Бронируйте на официальном сайте www.hotelpeking.ru
Москва, Большая Садовая, д.5
#отельпекинмосква#гостиницапекин#отельпекинмосква#номерлюкс#стандартныйномер#гостиницапекинмосква#pekinghotelmoscow#hotelpekingmoscow#hotelpekin#pekinghotel
Длинные майские праздники закончились и впереди нас снова ждут рабочие дедлайны, спешка, деловые встречи.
Легко настроиться на рабочий лад помогают мысли о предстоящем путешествии. Почему бы не устроить себе мини-отпуск в самом центре столицы? Забронируйте проживание в отеле “Пекин” и окунитесь в весеннюю атмосферу одного из самых красивых городов мира.
Театры, концертные залы, музеи, шикарные парки - все это в шаговой доступности от отеля.
Живите в “Пекине”, наслаждайтесь Москвой!
Бронируйте номера по телефону 8 800 250 05 50 или на официальном сайте по ссылке в шапке профиля.
Москва, Большая Садовая, д.5
#отельвцентремосквы#забронироватьгостиницу#отельпекин#гостиницапекин#гостиницапекинмосква#пекинотель#pekinghotelmoscow#hotelpekingmoscow#pekinghotel
Апартаменты “Золотой Сад” просторный двухкомнатный номер высшей категории, состоящий из большой спальни с двуспальной кроватью размера King size, гостиной с мягкой мебелью, обеденной зоны с кухонным уголком.
Идеальный вариант для размещения семьи.
Номер оснащен всем необходимым для длительного проживания, а дизайнерское решение в пастельных тонах способствует созданию уютной домашней атмосферы. Вся мебель выполнена из натурального дерева.
В ванной комнате: душевая кабина, биде, фен, косметические принадлежности, махровый халат и тапочки. Номер оборудован мини-кухней, чайной станцией, удобной обеденной зоной.
Бронируйте на официальном сайте www.hotelpeking.ru
#забронироватьгостиницу#стандартныйномер#номерлюкс#гостиницапекин#отельпекин#отельпекинмосква#hotelpeking#pekinghotelmoscow#pekinghotel#hotelpekingmoscow