Что делать если нужно поставить какую-то 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
🚨🔒 High school in Anne Arundel County, MD on lockdown! Substitute teacher's backpack found with a handgun inside. School immediately secured, students confined to classrooms. Gun handed over to police; belonged to the substitute. Substitute apprehended. No evidence it was in possession of any student. Substitute now banned from working in the district. Kudos to students for handling the situation calmly and following staff directions. Stay informed with the latest news from Fox 5 DC. 📚🔒#SchoolLockdown#SafetyFirst
https://www.foxnews.com/us/maryland-high-school-placed-lockdown-after-handgun-found-substitute-teachers-backpack
Subscribe to @BadVolfNews
Ethio-Djibouti Railway Prioritizes Flood Preparedness at Inaugural flood control Management Meeting
March 21, 2024: The Lebu headquarters of the Ethio-Djibouti Railway took a proactive step today by hosting its first flood control management meeting. Led by CEO Dr. Abdi Zenebe, the conference focused on preparedness, prevention, mitigation, and rescue strategies in the event of flooding.
Eng. Daniel Hailemichael, Chief Technical Officer, presented clear guidelines on flood management duties and responsibilities, including pre-during-and post-flood inspection procedures. Michael Tefera, Director of Infrastructure and Maintenance, followed with a comprehensive overview of current and future flood control infrastructure, including dams, levees, and channels, along with identifying flood-prone zones.
This inaugural meeting, attended by senior management of EDR, marks a significant step towards a robust flood risk mitigation strategy.
#FloodPreparedness#SafetyFirst#EthioDjiboutiRailway
❕Пилотный проект по внедрению программы SafeStart стартовал на Актюбинском заводе ферросплавов
Система обучения направлена на повышение осведомленности о безопасности и развитие навыков предотвращения травм среди сотрудников. Программа фокусируется на осознанном подходе к безопасности и помогает избежать критических ошибок, часто приводящих к несчастным случаям на производстве.
SafeStart не просто обучение, а практическая методика, которая обучает сотрудников распознавать потенциальные угрозы и эффективно реагировать на них.
#қауіпсіздікжылы#годбезопасности#erg#safetyfirst
📱ERG Kazakhstan
🚗💨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
🚨 Important Recall Alert from BMW! 🚨
Over 720,000 BMW vehicles are being recalled due to a defect that has already caused 18 fires!🔥💔
The issue is linked to an electrical connector near the pump, which can be exposed to liquid, leading to potential short circuits and, in unfortunate circumstances, fire hazards. ⚠️
Affected models include:
- Series 2, 3, 4, and 5
- SUVs X1, X3, X4, and X5
- Sports car Z4
If you own one of these models produced between 2012 and 2018, please check with your dealer!
Stay safe on the road! 🛣️✨
#BMW#Recall#SafetyFirst#CarSafety#StayInformed#VehicleRecall#BMWCommunity#Auto🚗💨
⚠️🌍Google прислал жителям Аланьи предупреждение о возможном землетрясении🇹🇷
12 ноября в Аланье владельцы смартфонов на Android получили экстренное уведомление от Google об ожидании землетрясения магнитудой 5.6 в акватории Средиземного моря.
Оповещение сработало через систему Android Earthquake Alerts System, которая реагирует на сейсмическую активность в режиме реального времени 📡
По данным турецких СМИ:
• толчки ожидались в районе Средиземноморского разлома;
• эпицентр находился в море, на безопасном расстоянии от жилых кварталов 🌊
• информация вызвала кратковременную тревогу среди жителей и туристов;
• серьёзных повреждений и жертв не зарегистрировано🙏
Система Google вновь показала свою эффективность:
📱 смартфоны работают как мини-сейсмографы, фиксируя вибрации и передавая данные в сеть;
⏱ пользователи получают предупреждение за секунды или десятки секунд до возможного толчка — этого достаточно, чтобы выйти на открытую местность.
Местные власти напоминают:
• сохраняйте спокойствие при таких уведомлениях;
• держитесь подальше от зданий и балконов;
• соблюдайте инструкции AFAD — турецкого управления по ЧС.
Будьте внимательны, особенно в сейсмоактивных регионах.
Безопасность всегда важнее всего ❤️🩹
#Аланья#Турция#Землетрясение#GoogleAlert#Android#Сейсмика#НовостиАланьи#Средиземноморье#SafetyFirst#EarthquakeAlert#Alanya#TurkeyNews