Что делать если нужно поставить какую-то 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
Сегодня завтрак начался с бокала вина и день выдался ленивым и томным с дневным сном и сериалом от которого не оторваться
В музей Востока мы так и не доехали, зато по пути в салон я не удержалась и купила бутылочку красного уже обычного объема 0,75 литра. Так что толер как бы и не снизился хотя суммарно вышло не 4 стандартных бутылки на двоих за два дня, а три. Почему по пути в салон? Ну просто педикюр в 20:00 и был риск не успеть на обратном, а риск-менеджмент- наше всё
Еще в моей жизни сейчас много перемен. Ритм и прогресс точно в том темпе который необходим и вообще возможен учитывая все события трех минувших лет. На этот год у меня большие планы, пока я к ним иду медленно, но верно максимально нагрузив себя трудотерапией и работая над тем, чтобы вас удивлять много и часто пишу о том и делюсь с вами чем могу здесь и сейчас- это многочисленными историями о былых приключениях и искусстве, особенно кино
Знаете, я уже достаточно давно поняла, что суть жизни в ее непредсказуемости, но только сейчас осознаю, что начинать все с начала невероятно увлекательно и интересно не смотря на то, что это весьма не просто
На рейвы как-то пока не хочется хотя много интересных ивентов. Жду весны, чтобы встречать рассвет в курилке и разговаривать обо всем и ни о чем
В декабре два раза была на Секте на Синестезии и Китчен рейв и не пожалела. С самого начала его пути и до феноменального роста он был и остается одним из самых моих любимых артистов. Еще вспоминаю Черту и последнюю вечеринку команды почти год назад. Я даже дату запомнила- 22 февраля. Самый мой любимый рейв прошлого года. Еще был М див весной и предпоследняя вечеринка в Арме. Мы думали, что прощаемся с заводом и было как-то особенно лирично чтоли. Но не тут то было, клуб на Шарикоподшипниковской не так-то просто отправить в отставку хотя он навсегда лично для меня останется Мутабором в который я пришла в 2019 и загорелась идеей снимать на рейвах влюбившись отчаянно в техно. Много воды утекло с тех пор: стремительное начало в рейв-фотографии, три года работы с Мона, команда заботы, воспеты взлет и больное падение. Я даже на какое-то время разлюбила рейв, но и это прошло. Что остается неизменным- это любовь к техно. Прямая бочка она такая 🖤
#diary
Знаете, неожиданно для себя я вдруг поняла, что действительно слишком увлеклась этой идеей предстать идеальной ибо когда человек ( не важно кто он тебе отец или сосед) обесценивает любые твои достижения вне зависимости от сферы этих достижений
Грубо говоря, вот за последние пять лет ты волонтерил в приюте, стал фин куратором пяти животных, а это значит буквально 5 спасениях жизней, два года проработал в компании и зарабатывал деньги, но более ты там не работаешь, стал писать картины и даже провел выставку и тп. То есть буквально все на свете, но человек напротив обесценивает абсолютно все. Благотворительность- это вложения, а не доход. Если не работаешь больше в той компании, то какая разница сколько зарабатывал, а выставка без продаж работ не имеет никакого значение. И вдруг я осознала очень четко и ясно, что я так боялась разочаровать, что почти не заметила как разочаровалась сама. И я выбрала себя
Пусть я не образца 2017 когда я реально рубила бабки, и даже в 2022 шальные деньги на крипте были очень большими, просто пошли не туда. Тем не менее… миллион в месяц я зарабатывала. Было дело. И тратила тоже миллион в месяц. Тоже было дело. Пусть это и случалось эпизодично с высоты прожитых лет. Но это было и я знаю эти ощущения, и мне не жалко ни каких-то огромных трат в никуда в том же 2022-2023 или в том, что я вышла и крипто торговли на биржах в 2018 ( у меня были везде про аккаунты с достаточно большими депозитами). Рынок крипты хаотичен и создан теми кто им и манипулирует. Рынок тебя все равно вышибет сколько не спорь. Вопрос времени. Я вынырнула вовремя. Это тоже достижение. В плюсе
В общем, я настолько видимо нервничала, что мне прямо вот до талова несвойственно, что неведомый недуг свалил меня с ног перед встречей и аккурат после. Причем после аж на неделю. Это не была простуда, я чувствовала боль в тех местах где нет органов, спала сутками пока, наконец, не убедилась, что ее величество Психосоматика вошла в чат. И приняла это как данность
Сегодня первый день когда я прямо в боевой готовности все делать и решать и повторюсь, что я выбираю себя хотя люблю очень много людей. Это не эгоизм, а здоровое отношение к себе. Только уважая себя самого и трезво понимая текущие достижения и провалы ты можешь двигаться вперед, расти и отдавать любовь своим близким
Мне было прикольно погрузиться в воспоминания о 2010-х. Спасибо, блин, тренды в запрещеннограмме. Но прошлое есть прошлое. Круто, что есть, что вспомнить. И круто, что можно опираясь на прошлое быть планкой для самого себя
Пусть я сейчас возможно звучу смешно и неубедительно, с плохими охватами и практически не являюсь никаким примером и авторитетом, но я сегодня являюсь лучшей версией себя за последние 3 года. И это- достижение…
#diary
Мой год начался очень насыщенно. Точнее, еще в декабре я начала готовиться к встрече с близким мне человеком с которым не общалась порядка десяти лет. Я настолько в эту подготовку нырнула в омут с головой, что в какой то момент сделать все идеально стало навязчивой идеей
Параллельно со всем этим я начала работать с психологом и мы проговаривали о том, что никто ничего никому должен, быть собой и сохранять себя настоящего каким ты являешься в текущий период жизни намного важнее, чем соответствовать чужим ожиданиям. Я это все прекрасно понимала и до наших сессий и тем более все раскладывалась по полочкам с каждой нашей онлайн встречей. И, скажем так, мы сошлись на том, что предстоящая встреча стала тем самым волшебным пенделем и то, что я не могла никак наконец закончить: это сделать генеральную уборку, наконец разобраться с финансами, доходами и расходами, облагородить дом и вообще на энтузиазме можно достаточно долго лететь вперед решая все дела на своем пути. Следующий шаг- это тебя уже прет твоя продуктивность. Так что энтузиазм- это мощная энергия
Я поставила себе цели которые в данный момент моей жизни изначально казались невыполнимыми. Рассчитывая на себя ( хотя меня поддерживает морально и материально бывший супруг и с ним мы вообще сейчас абсолютно в прекрасных отношениях, научились соблюдать личные границы, не давать оценку действиям друг друг и вообще быть терпимее. И пусть работы еще предстоит много мы с ним проделали колоссальный путь). Тем не менее я расписала все, что хочу купить на подарки, в дом, сделать весьма серьезные бьюти-процедуры которые дают действительно явный эффект и, соответственно, стоят). Список оказался внушительным и так как я еще набираю былую форму к доходу который меня устраивает я еще не вернулась. Неожиданно я поймала себя на том, что в голове все ясно и я четко ставлю себе цели, подцели и, разумеется, мечты. У меня есть понимание как все это достичь. И пусть моя цель к 7 января когда, наконец, встреча случилась я выполнила все запланированное и даже больше, и несказанно этому рада. Я сама от себя не ожидала такой конкретики. Пусть и в былые времена я легко делала иксы от тех цифр, которые были для меня определяющими в этом году, но я выполнила все запланированное. Вообще все #diary
Продолжение 👇