Что делать если нужно поставить какую-то 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
ЛАЗЕРНЫЙ БИЛЕТ ИЗ СЕРИИ «ЦЕРЕМОНИЯ ЗАПУСКА» | ОФИЦИАЛЬНЫЙ МЕРЧ | AZURLANE
🌟Персонажи:
🌟 Z52
🌟 Fritz Rumey
🌟 Raffaello
🌟 Moskva
🌟Детали:
⭐ Товар ЛИМИТИРОВАН, продажи будут до 12 МАРТА
⭐Предпродажа, отправка на склад в течение 200 дней
⭐Размеры: 20х7 см
🌟Цена: 650 🌟 (рублей)
🌟Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
🌟Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
🌟Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#AzurLane@astroknightshop
#Z52@astroknightshop
#FritzRumey@astroknightshop
#Raffaello@astroknightshop
#Moskva@astroknightshop
🍨Сладкий дресс-код: CHARMSTORE и Raffaello предлагают начать деловой сезон со вкусом
Пока все скупают канцтовары и грустят по уходящему лету, бренды нашли изящный способ «подсластить» возвращение к рутине.
👗Российский бренд одежды CHARMSTORE в партнерстве с Ferrero (владельцем марок Raffaello и Ferrero Rocher) выпустил капсульную коллекцию, чтобы возвращение в офис или в университет после каникул было максимально приятным.
Идея в том, чтобы превратить начало делового сезона из обязанности в dolce vita.
👗Что внутри «конфетной» коллекции?
• Платья: объемные модели с открытой спиной и рукавами-буфами в ванильных и золотых оттенках.
• Блузы: акцентные модели с бантами для строгих, но нескучных образов.
• Брюки-баллоны и аксессуары: золотистые сумки-мешки и… чалмы.
🎨 Дизайн и палитра:
Вся коллекция пронизана кондитерской эстетикой: нежные пастельные оттенки, кремовые и золотистые тона, летящие ткани и лаконичные, но запоминающиеся формы.
🛍️ Где брать?
В кондитерском отделе
Коллекция доступна с 19 августа в бутиках CHARMSTORE и на официальном сайте fashion-бренда.
👛Почем радость?
Платья - от 29 до 42 коробок Raffaello или Ferrero Rocher
Сумки - от 9 до 13 коробок
Чалмы - от в 6 до 8 коробок сладостей в рублевом эквиваленте**
⭐️Коммент для маркетологов (со «звездочкой»)
Почему коллаборации с конфетами в сезон «Back to School» — это «пятерка» за стратегию и тактику?
Во-первых, бренды «играют на эмоциях». Конец лета и каникул часто ассоциируется с грустью и стрессом. Бренды предлагают «дофаминовую прививку» — покупку, которая становится наградой и утешением.
Ассоциация новой блузки с нежным вкусом конфет удваивает эффект, превращая рутинный шопинг в акт заботы о себе.
Во-вторых, это расширение аудитории и отличный инфоповод. Коллаборации создают шум, привлекая внимание как fashion-шопоголиков, так и любителей сладкого.
Именно так бренды могу «обменяться» лояльной аудиторией и выделиться на фоне стандартных «осенних коллекций».
В итоге, одежда перестает быть просто одеждой, а конфеты — просто десертом. Они становятся частью общего лайфстайл-сообщения: «Начинайте новый сезон красиво и со вкусом!»
Из таких же остроумно-пищевых коллабов в нашей стране вспоминается апрельский дуэт Роллтон х Beauty Bomb. Из того, что #неунас — rhode х Krispy Creame в 2023 и Crocs х McDonalds (классика)
А вообще марки из мира fashion и красоты активно сотрудничают со «вкусными» марками и для этого есть даже отдельный тренд под названием #foodcore
………………..
*Источник: соцсети и официальный сайт марки
**Как мы считали
1 коробка Raffaello (150 г) = 450 руб
1 коробка Ferrero Rocher (200 г) = 650
#августомания@girlinmall#коллаб@girlinmall#charmstore#raffaello