Что делать если нужно поставить какую-то 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
⚡ The “world's fastest armored vehicle” with a unique set of features has been unveiled
That's what its creators at US Armor Group are calling it. The vehicle is based on the Lucid Air Sapphire and is designed to change “preconceptions about the luxury of armored cars”.
The EV received a three-motor all-wheel drive system with an output of 1234 hp. This allows the standard model to accelerate from 0 to 96 km/h in 1.89 seconds, reach a top speed of 330 km/h and have a range of up to 687 km.
US Armor Group added lightweight ballistic windows that can withstand .44 Magnum rounds, as well as lightweight composite armor that is “10 times stronger than ballistic steel but five times lighter.”
In addition to the armor, the vehicle is equipped with an “impenetrable Internet/WiFi security package” that promises to protect data from hacking attempts. The company said the model has received “advanced technology that continuously scans nearby threats during transportation, gathering intelligence from more than one million sources, including scanners from local police and fire departments.”
Customers can add more powerful armor to protect against grenades, explosive devices and high-powered rifles. Options include stun door handles, pepper spray hidden in the armrest, and hidden gun locations.
Prices start at $475,000.
@CarsNews
#LucidAir#EV
⚡Представлен «самый быстрый в мире бронированный автомобиль» с уникальным набором характеристик
Так его называют создатели из US Armor Group. Автомобиль создан на базе Lucid Air Sapphire и призван изменить «предубеждения о роскоши бронированных автомобилей».
Электромобиль получил трёхмоторную систему полного привода мощностью 1234 л.с. Это позволяет стандартной модели разгоняться от 0 до 96 км/ч за 1,89 секунды, достигать максимальной скорости 330 км/ч и иметь запас хода до 687 км.
US Armor Group добавила легкие баллистические окна, которые могут выдерживать выстрелы из .44 Magnum, а также легкую композитную броню, которая «в 10 раз прочнее баллистической стали, но в пять раз легче».
Помимо брони, автомобиль оснащён «непроницаемым пакетом безопасности Интернета/WiFi», который обещает защитить данные от попыток взлома. Компания заявила, что модель получила «передовую технологию, которая непрерывно сканирует близлежащие угрозы во время транспортировки, собирая разведданные из более чем миллиона источников, включая сканеры местной полиции и пожарных».
Клиенты могут добавить более мощную броню для защиты от гранат, взрывных устройств и мощных винтовок. В качестве опций: электрошоковые дверные ручки, спрятанный в подлокотнике перцовый баллончик и скрытые места для оружия.
Цены начинаются от $475 000.
@avtoNovosti
#LucidAir#электромобиль
🚗💨Introducing the World’s Fastest Armored Vehicle: Lucid Air💨🚗
Meet the Lucid Air Sapphire, a stunning 1250-horsepower electric car that’s not just about speed—it’s also built to protect! 🛡️✨
This beast is equipped with composite armor and bulletproof glass, capable of withstanding shots from .44 Magnum handguns (think Desert Eagle!). 🔫💥 For those seeking extra security, optional upgrades can enhance protection against grenades and automatic rifle fire.
Priced at $475,000, this armored marvel is nearly double the cost of the standard Air Sapphire. 💰💎
#LucidAir#ArmoredVehicle#ElectricCar#Luxury#SafetyFirst#Innovation#Auto