Что делать если нужно поставить какую-то 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
Dock Boggs — Dock Boggs (Folkways Records, 1964)
#traditional#country#appalachian#United_States
Док Боггс однажды сказал: «Мне всегда нравились песни одиноких». В этом сборнике представлены мрачные песни об одиночестве, такие как Pretty Polly и Oh Death, исполненные в характерном для аппалачской музыке стиле.
🔗Spotify | AppleMusic
Nora Brown — Long Time To Be Gone (Jalopy Records, 2022)
#traditional#appalachian#banjo#United_States
Нора Браун специализируется на традиционной музыке Южных Аппалачей и мастерски владеет банджо и гитарой. В детстве она обучалась игре на банжо у звезды американского фолк-ривайвла Джона Коэна, а также у не менее известных фолк-исполнителей Джорджа Гибсона, Ли Секстона и Арта Розенбаума. Long Time To Be Gone — третий альбом Норы, записанный в церкви Святой Анны, возведенной в Бруклин-Хайтс в конце XIX века.
Помимо велеколепной акустики церкви Святой Анны, Long Time To Be Gone примечателен уникальным набором инструментов, каждый из которых связан с музыкальной родословной Браун. Среди инструментов Норы — банджо Luscomb 1888 года, принадлежавшее её прапрадеду; безладовое банджо, изготовленное её отцом; и пятиструнное банджо, на котором когда-то Роско Халкомб записал свой альбом High Lonesome Sound. Роск Халкомб общался с учителем Норы, Джоном Коэном, а его музыкой в свое время восхищался даже Боб Дилан. Теперь его пятиструнное банжо хранится в Библиотека Конгресса США, но на время записи попало в руки к Норе.
🔗Spotify | AppleMusic | Bandcamp
Frank Fairfield — Out On the Open West (Tompkins Square, 2011)
#traditional#blues#country#bluegrass#appalachian#United_States
Второй альбом Фрэнка Фэрфилда, певца, исполнителя на скрипке, гитаре и банджо. Фрэнк невероятно аутентично исполняет старинную народную музыку американских штатов, чем заслужил признание самых строгих критиков. Про него даже сняли документальный фильм. А еще он озвучивал персонажа Toymaker, появляющегося в четвертом эпизоде Songs of the Dark Lantern мультфильма Over the Garden Wall. Хотя начинал Фрэнк как обычный уличный музыкант.
🔗Spotify | AppleMusic
Frank Fairfield — NPR Music Tiny Desk Concert (2015)
#blues#country#bluegrass#appalachian#video#United_States
Фрэнк Фэрфилд исполняет старинную американскую народную музыку в сопровождении Тома Мариона и Зака Соколоу. Особенно хороша песня I Ain't A Goin' To Weep No More, где лирический герой поет о том, что больше никогда не будет печалиться, потому что его любимая согласилась выйти за него.
Фрэнк невероятно аутентично исполняет народную музыку американских штатов, чем заслужил признание самых строгих критиков. Про него даже сняли документальный фильм. А еще он озвучивал персонажа Toymaker, появляющегося в четвертом эпизоде Songs of the Dark Lantern мультфильма Over the Garden Wall. Хотя начинал Фрэнк как обычный уличный музыкант.
🔗YouTube | Telegram
Oak and Ivy — Holler (Self-Released, 2024)
#traditional#field_recording#appalachian#oldtime#clawhammer#banjo#United_States
Holler — сольная акустическая запись, сделанная ночью в Аппалачах. В альбом вошли традиционные песни региона, исполненные без студийной обработки, в живой и непосредственной манере. Среди них, например, — The Cuckoo, английская народная песня, получившая широкое распространение в Северной Америке, и Cluck Old Hen, один из старейших образцов аппалачского репертуара, впервые записанный в 1923 году Фиддлином Джоном Карсоном, но известный в устной традиции как минимум с 1886 года.
🔗Bandcamp | Telegram
Various Artists — Industrial Strength Bluegrass (Folkways Records, 2021)
#traditional#bluegrass#banjo#fiddle#mandolin#appalachian#Ohio#United_States
Industrial Strength Bluegrass рассказывает о том, как выходцы из Аппалачей, переехавшие на юго-запад Огайо в середине XX века, принести с собой музыку блюграсс и вплели её в ритм индустриального города. Песни альбома отражают жизнь мигрантов, проходящую между заводскими цехами и субботними вечерами с банджо; передают ностальгию по родным горам; показывают, как блюграсс адаптировался в новом окружении, не теряя своей музыкальной сути.
Альбом спродюсировал музыкант и радиоведущий Джо Маллинз, а в записи приняли участие многие звезды современного блюграсса, включая Ронду Винсент,Бобби Осборна и самого Маллинза. Расширенное виниловое издание альбома включает архивные записи The Stanley Brothers,Larry Sparks,Red Allen & The Allen Brothers, которые помогают еще глубже погрузиться в музыкальный контекст «индустриального блюнрасса».
🔗AppleMusic | Spotify | YouTube | Deezer | TIDAL | Bandcamp