Что делать если нужно поставить какую-то 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
Ассаламу Алайкум, дорогие друзья!
Республиканское общественное движение «Турпалхой» искренне поздравляет Главу ЧР, Героя России Рамзана Ахматовича Кадырова с присвоением ему звания «Герой Чеченской Республики»!
Рамзан Ахматович подтверждает свой героизм на протяжении многих лет у руководства региона. Благодаря его стратегически точным и важным решениям чеченский народ обрел мир и порядок на своей земле. Рамзан Ахматович сумел уничтожить до последнего представителей международного терроризма, которые десятки лет сеяли хаос и разрушения на чеченской земле. В связи с этим, звание «Герой Чеченской Республики» нашло своего заслуженного и достойного обладателя.
Желаем Вам, Рамзан Ахматович, терпения, сил и успехов в Вашем нелегком деле! Вы - настоящий ТУРПАЛХО и весь чеченский народ Вами гордится!
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Наши бойцы всего за пару недель заставили в страхе зашевелиться весь мир. Враги наши делают все, чтобы ослабить наших бойцов… откуда им, дуракам, знать, что мужество и отвага невозможно ослабить и что наши бойцы не остановятся ни перед чем, чтобы выполнить приказ!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Президент России Владимир Владимирович Путин - тот человек, который остановил войну в ЧР, принес мир и каждый день заботился о том, чтобы этот мир сохранить. Человек, который своими словами и делами возвысил имидж нашего региона и религии. И идти за таким человеком для нас огромная гордость!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
За правое дело хочется смиренно жить или же достойно умереть! Ты знаешь, что при любом исходе, ты был прав. Посему ты можешь себе позволить пошутить, посмеяться самому, а если требуется не моргнув глазом рискнуть всем.
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Более двух десятков лет Глава ЧР, Герой России Рамзан Ахматович Кадыров и словом и делом доказал, что народ и его благополучие для неё в приоритете над всем остальным! Он столько лет так самоотверженно вел за собой народ, что теперь, любой чеченец, встанет за него горой и без сомнения не пожалеет своей жизни за его безопасность!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Наши опытные бойцы всегда пребывают в особом расположении духа перед каждым сражением. Когда враг думает как спасти свою жизнь, наши бойцы думают как истребить врага ни капли не переживая за свою. В этом мы отличаемся от бандеровщины и подобной швали.
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Это нужно какой подлой и низкой падалью быть, чтобы звонить родственникам солдат и сообщать об их гибели, зная, что они в здравии, но не могут сами выйти на связь. Во все времена, люди даже за большие деньги отказывались сообщать такое родственникам когда это на самом деле было правдой. До чего же вы низко пали! Конечно, вы бы хотели чтобы наши бойцы ушли в праведный мир, но убегая с поля боя вы ничего не добьётесь! У вас нет мужества открыто вести вражду, так вы опустились до уровня телефонных пранкеров! Вы не воины, вы просто пранкеры!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Если хотите знать, что значит «миротворческая операция», то посмотрите как себя ведут наши бойцы в зоне боевых действий. Как их только не называет запад, а в действительности же мы видим, что эти молодые ребята спасают жизни людей! Сколько уже спасено жизней и сколько предстоит еще?! Наши бойцы, это когда через всю страну привозят мать к своим детям, когда на руках вытаскивают раненых, когда вокруг идут взрывы, когда рискуют собой ради тех, чьих имён даже не знают! Это и есть наша спецоперация!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Метр за метром наши бойцы очищают территории Украины от неонацистов и от подобной им швали! Они настолько четко делают свою работу, настолько опережает их слава, что, куда бы они не пришли, они находят, что враг бросил всю технику и просто сбежал! Когда как враги их воюют фейками, эти мужчины рвутся в настоящий бой, но нигде не могут найти врага!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Путь Ахмат-Хаджи - это образ жизни, идеология, стремление к миру и добру.
Других интересов у члена этой команды не должно быть.
#Kadyrov
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои