Что делать если нужно поставить какую-то 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
@RusEmbMalta: President of the Russian Federation has declared March 24 a day of nationwide mourning after the terrorist attack in Moscow.
Online condolence book will be opened by the Embassy on March 24-26, 2024.
All those willing to send their messages can do so via [email protected].
#Crocus
#НасНеЗапугать
Premier anniversaire de l'attaque terroriste du #Crocus City Hall à Moscou
Des colonnes de granite noir sur lesquelles sont représentées des cigognes qui s’envolent, symbolisant l’âme des victimes de l'attaque #terroriste qui a fait 145 morts et plus de 550 blessés. De nombreuses personnes sont venues à l’inauguration ce samedi pour déposer des fleurs, en même temps que des prêtres y célébraient un office aux victimes. Notre reporter Igor Kourachenko s’est rendu au mémorial et nous revient avec les détails de ce triste anniversaire.
RT en français • Osez questionner !
🇷🇺 Une cérémonie commémorative s’est tenue près du Crocus City Hall à Krasnogorsk, en région de Moscou, à l’occasion de l’anniversaire de l’attaque terroriste du 22 mars 2024.
Ce jour-là, quatre assaillants avaient ouvert le feu sur les spectateurs avant de mettre le feu à la salle. 147 personnes ont été tuées, 3 sont portées disparues et 336 ont été blessées.
#russie#crocus#commémoration
🕯Hoy cumplen 40 días desde la tragedia en Crocus City Hall donde en un atentado terrorista caeron víctimas 145 personas y más de 550 resultaron heridas.
❌Se ha detenido a doce sospechosos en el caso, diez de los cuales han sido arrestados, entre ellos cuatro participantes directos en el atentado.
❗️El terrorismo es una amenaza común y debe ser combatida conjuntamente. "Los trágicos sucesos ocurridos recientemente en #Crocus han demostrado una vez más la necesidad de intensificar los esfuerzos conjuntos de los especialistas en estos campos y de los legisladores para contrarrestar este mal universal.
#Rusia#CrocusCityHall
⚡️De varias ciudades de #Venezuela la gente, que no puede quedarse indiferente ante la tragedia, ocurrida en #Crocus City Hall en Moscú, nos manda mensajes con palabras de apoyo y fotos de los actos de solidaridad.
❗️El masacre ocurrido en #Moscú es un acto vile de terror organizado para intimidar el pueblo y destabilizar la sociedad.
🙏 Agradecemos la manifestaciones del pueblo hermano venezolano contra las acciones inhumanas llamadas terrorismo.
#JuntosVenceremos
US Condemns Crocus City Hall Terror Attack on Anniversary
The US Embassy in Russia marked the second anniversary of the Crocus City Hall tragedy, expressing solidarity with victims’ families. The March 22, 2024 terror attack claimed 151 lives, including children, profoundly affecting many. The US emphasized that the memory of those lost remains strong over time.
#terrorattack#Crocus#USA#Russia#remembrance
The main news of Russia and the world ishere.
Продолжаем знакомить вас с нашими партнёрами!
Сегодня рассказываем о CROCUS TV
CROCUS TV - это медиаканал, транслирующийся на крупноформатный дисплеях в торговых центрах, ресторанных сетях, салонах красоты. Контент канала состоит из сюжетов про путешествия, спорт, главные тенденции в моде, гастрономию, культуру и высокие технологии!
Холдинг Crocus Media объединяет в себе лучшие каналы для рекламы!
Это и информационная поддержка от партнёров, прямые эфиры с места проведения мероприятий, продакшн под ключ.
Мы бесконечно счастливы иметь таких крутых партнеров! С вами творить добро ещё приятнее💙
#помощь#благотворительность#детисма#благотворительныйфонд#важныелюди#детимосква#россия#спорт#добро#пожертвование#врачимосква#добрыйдоктор#дети#crocus#media
Добрый день, Важные люди!
В нашей команде появился замечательный партнёр - Crocus TV.
Crocus TV - атмосферный контент.
Эстетичные видеосюжеты со всех уголков света для искушенной аудитории. Площадка для реализации ваших рекламных возможностей. Медиаканал для тех кто выбирает лучшее.
Самый быстрорастущий канал с охватом более 30 млн зрителей ежемесячно. 1000 локаций, 3000 экранов, 15 городов. Crocus TV представлен на территории объектов:
рестораны, бизнес-центры, гольф-клубы, аэропорты, солоны, фитнес центры, кинотеатры, отели.
#CrocusTV#партнерфонда#друзьяфонда#Crocus#каналCrocus#Медиаканал#видеосюжет#атмосферныйконтент#TV#важныелюди#важенкаждый