Что делать если нужно поставить какую-то 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
📖Title : Fearless
✍️Author : Lauren Roberts
⭐️Rating : 4.22/5 (Goodreads)
📆Published : Apr 08, 2025
————————————————
Summary:Fearless by Lauren Roberts is the gripping conclusion to The Powerless Trilogy, a young adult romantasy series. The story follows Paedyn Gray, an Ordinary in a world dominated by the powerful Elites, as she returns to the Kingdom of Ilya. Facing a life-altering decision, Paedyn must navigate political intrigue, personal betrayals, and the complexities of love. Her relationship with Kai Azer, an Elite and her former adversary, intensifies amidst the kingdom's turmoil. As Paedyn confronts trials that test her courage and resilience, she challenges societal norms and redefines strength. Roberts weaves a tale of empowerment, loyalty, and the enduring power of love in a fractured world.
————————————————
#fiction#fantasy#romantasy#youngadult@Bookslibraryofficial@free_novellas@the_ancient_library
📖Title : Enigma
✍️Author : RuNyx
⭐️Rating : 3.91/5 (Goodreads)
📆Published : Apr 29, 2025
————————————————
Summary:Enigma by RuNyx is a steamy dark academia romance that follows Salem Salazar, the black sheep of a wealthy family, as she enters Mortimer University to uncover the truth behind her sister's mysterious death. Obsessed with death and driven by secrets, Salem is soon entangled with Cazimir van der Waal—a chaotic, brooding artist and teaching assistant with a hidden past. Their intense, rivals-to-lovers relationship unfolds amid secret societies, missing girls, and deadly mysteries on campus. As danger closes in, passion ignites between fire and ice. *Enigma* is a twisted, suspenseful tale of obsession, love, and peril set in an academic underworld.
————————————————
#fiction#darkromance#fantasy#romantasy#darkacademia@Bookslibraryofficial@free_novellas@the_ancient_library
📖Title : Blackthorn
✍️Author : J.T. Geissinger
⭐️Rating : 4.03/5 (Goodreads)
📆Published : Nov 04, 2025
————————————————
Summary:Blackthorn follows Maven Blackthorn as she returns to her haunted hometown after her grandmother’s funeral—only to discover the body has mysteriously vanished. Caught in a generations-old feud between the Blackthorns and the powerful Croft family, Maven is forced to confront Ronan Croft, her first love and the son of her mother’s suspected killer. Their dangerous chemistry resurfaces as whispers of occult rituals, buried secrets, and horrific betrayals emerge. As Maven digs deeper, she uncovers a terrifying truth that threatens everyone she loves. In a town where the dead refuse to rest, love becomes both a weapon and a deadly curse.
————————————————
#romance#gothic#romantasy#fantasy#paranormal@Bookslibraryofficial@free_novellas@eternalmantra