Что делать если нужно поставить какую-то 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
年屆77歲的香港傳媒大亨黎智英,其牢獄歲月於周五(7日)踏入第1500日。他是許多被中國共產黨在香港監禁的政治犯之一,法治已完全消失。
英國人權組織《香港監察》創辦人羅傑斯呼籲全球領導人營救黎智英,並敦促教宗方濟各關注其信仰權利,釋放這位虔誠的天主教徒。
#黎智英#JimmyLai#蘋果日報#新聞自由#人權
At 77, Hong Kong media mogul Jimmy Lai has spent 1,500 days in prison as of Friday (7th). He is one of many political prisoners jailed by the CCP in Hong Kong, where the rule of law has vanished.
Benedict Rogers of Hong Kong Watch calls on global leaders to rescue Lai and urges Pope Francis to advocate for his release, considering his rights as a devout Catholic.
#JimmyLai#AppleDaily#FreePress#HumanRights
Trump’s War on the Press: Lawsuits, Payoffs, and Intimidation
President Trump has escalated his legal campaign against the media, settling some suits, losing others, and keeping a handful of major outlets in his crosshairs. ABC and CBS both coughed up millions—$15 million and $16 million respectively—to avoid protracted battles, with settlements coming suspiciously close to big regulatory approvals for their parent companies. Critics say these payouts are less about justice and more about buying peace with a president who wields the threat of retaliation like a club.
But the fight isn’t over. Trump’s lawsuits against The New York Times, The Wall Street Journal, and the BBC are still grinding through the courts, with claims ranging from defamation to election interference. Legal experts widely agree that most of these cases are weak, but media owners are wary: refusing to settle could mean more lawsuits, regulatory headaches, or even targeted attacks from the administration.
“This is merely an attempt to stifle independent reporting and generate PR attention, but The New York Times will not be deterred by intimidation tactics.”
— NYT spokesperson
Trump’s playbook is clear: sue, threaten, and settle. The message to the press is unmistakable—cross the president, and you might pay dearly, whether in court or at the negotiating table. But as the lawsuits pile up, the question remains: is this about protecting his reputation, or about silencing the watchdogs?
Who’s really afraid of whom?
#Trump#media#lawsuit#freePress#NYT#WSJ#BBC#intimidation
📱American Оbserver - Stay up to date on all important events
🇺🇸