Что делать если нужно поставить какую-то 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
🎧 Beyond the headlines on CDC vouchers and AI, how does #Budget2026 impact businesses, workers and you?
In a special episode of The Usual Place podcast, we have Second Minister for Finance Indranee Rajah, SMU assistant professor of political science Nathan Peng, and SG Tech co-chair of AI, Cloud and Data Chapter Gunasekharan Chellappan to help answer these questions. https://str.sg/pUiK
PM Lawrence Wong unveiled a range of support measures for Singaporeans in his #Budget2026 speech. https://str.sg/neqA
What was your favourite announcement?
🎧 More help for AI training, more support for lower-income families and just a little bit more CDC vouchers. But what does this year's #Budget2026 mean for us all?
This week on The Usual Place podcast, we chat with NUS political science lecturer Rebecca Grace Tan and SBF chief policy and operating officer Musa Fazal who help us make sense of it all. https://str.sg/siJV
#Budget2026: To discourage the consumption of tobacco products, PM Lawrence Wong said he will be imposing a 20% increase in tax on all such products from today. https://str.sg/y8jZ
#Budget2026: Eligible Singaporeans will receive a CPF top-up of up to $1,500, as part of measures to provide more support for seniors.
A new investment scheme will also be offered to CPF members. https://str.sg/BMhyP
#Budget2026: Singapore will be updating its foreign workforce policies to keep the country open to skills and expertise from foreigners, while ensuring Singaporeans remain at the centre core of the local workforce. https://str.sg/EG7k
#Budget2026: Singaporeans who go for selected AI training courses will get 6 months of free access to premium AI tools.
This is to allow them to practise, experiment, and apply what they have learnt. https://str.sg/JZGVx
#Budget2026: Singapore will establish a new National AI Council to provide strategic direction and drive the country’s AI agenda.
PM Lawrence Wong will chair this council. https://str.sg/4T5R9
https://x.com/priceactiongann/status/2017974249944932755?s=20
Nifty 50 very important levels are ahead
24355 to 23900
#StockMarketCrash is loading but not before the top cycle 27000 to 28000 completes and once it is done the one of the main cycles will take over on top.
#Budget2026
23900 was given months and highs were broken since then ranging on top and now retraced.
as long as the 23900 to 24355 holds and above that is clear upside only.
from there levels check for confirmations and once its clear and it forms lows here and it must hold there and price bounces nicely and goes up
long term cycle is 26525 and breaking that would be 27000 and next would be 28000 and will update once reached 27000.
bank nifty previous levels were 59860 and it's where the high was today almost exact it worked very well in nifty because of gift nifty in that cycle was complete and also bank nifty coincided
once this current upside is done it will all crash this year after highs around 28000 or so will update exact as price approaches near it.