Что делать если нужно поставить какую-то 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
📣📣📣Speaking contest 📣📣
#Actual speaking topic
.All answers should be sent to @I_ENG_LISH
⭕ Describe an interesting talk or speech you heard recently
⚠️You should say
🍀Where you heard it
☘️Who the speaker was
🍀What the talk or speech was about
☘️Why you think it was interesting
“Khamenei Will Die Soon”
The Khamenei regime will not be able to maintain control over Iranian society after the violent suppression of the latest wave of protests, one of the country’s leading film-makers has predicted.
“It is impossible for this government to sustain itself in this situation (...) Khamenei will die soon”, the director Jafar Panahi said.
“They know it too. They know that it will be impossible to rule over people. Perhaps their only goal right now is to bring the country to the verge of complete collapse and try to destroy it.”
Protests caused by an ailing economy have swept through Iran since late December and were met with deadly crackdowns by the security forces over the weekend, with reports of more than 2,500 people killed.
A internet blackout imposed last Friday, which blocked 95-99% of the country’s communication network, was a “sign that there would be a very big massacre on the way”, Panahi said.
“But we never predicted that the crackdown would have such dimensions and numbers.”
In December the director was handed a one-year prison sentence in absentia on charges of creating propaganda against the political system, but he has stated his intention to return to the country.
He has been jailed twice, for protesting against the detention of two fellow film-makers who had been critical of the authorities in 2022, and for supporting anti-government protests in 2010.
Panahi said while the collapse of the government led by the clerical leader, Ayatollah Ali Khamenei, was inevitable after the latest bloody suppressions, its timing was impossible to predict.
He warned western governments about engaging with the clerical regime as rational actors.
“In other dictatorships around the world, you will see that there will be at least a few people who will act based on rationality and who will not let it get to this point,” he said, speaking via his interpreter Sheida Dayani.
“But unfortunately in this system there is no rationality. All they can think of is crackdown and how they can stay in power even just one more day. The last thing they’re thinking about is the people.”
Asked whether Pahlavi could be trusted to oversee a post-regime transition, he said this would be for the people of Iran to conclude.
“Whether we agree with Pahlavi or not, we know that the overwhelming majority of the population of Iran want the current regime to go.”
#khamenei#iran#regime#actual#people#killed
📱American Оbserver - Stay up to date on all important events
🇺🇸