Что делать если нужно поставить какую-то 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
— A biting frost over Istra and the New Jerusalem Monastery. Russia, you are beautiful (and refreshingly crisp)!🥶✨
📸Photo:@alexander_teleshov_photo
📍Coordinates:Yandex Maps
#MoscowRegion
🏙️Beyond Moscow🏔️
Constructivism in Kolomna: the city’s avant-garde architecture has been remarkably well preserved! 🏙️
At the turn of the 1920s–1930s, Kolomna experienced rapid industrial growth. On its outskirts, new workers’ settlements emerged — built according to the cutting-edge architectural ideas of that era.
📸 Photo: @ted_ns
📍Coordinates: Yandex Maps
#MoscowRegion
🏙️Beyond Moscow🏔️
The Church of the Sign of the Blessed Virgin Mary in Dubrovitsy – A Baroque Gem Outside Moscow
Tucked away just outside Moscow, the Church of the Sign of the Blessed Virgin Mary in Dubrovitsy is unlike any other church in Russia — or the world.
Instead of the traditional onion domes and painted frescoes, this masterpiece dazzles with intricate stone carvings, high-relief sculptures, and a richly decorated interior that feels more like a baroque palace than an Orthodox church. Step inside, and you won’t see the familiar walls of icons and murals — instead, the sheer abundance of sculpted ornamentation leaves you breathless.
The church was completed around 1699 under Prince Boris Alexeyevich Golitsyn, who was a tutor to Peter the Great. Its exact architect remains a mystery. What we do know is that craftsmen from the Kremlin Armoury in Moscow worked alongside nearly 100 Italian sculptors and carvers, brought in especially for this ambitious project.
When the church was consecrated in 1704, Tsar Peter the Great himself attended the ceremony with his son — a sign of just how important this unusual creation was to the Russian Empire.
Today, the Church of the Sign remains a one-of-a-kind monument: a fusion of Russian tradition and Western European baroque, standing as a true marvel of its time.
📸 Photo: @elena_krizhevskaya
📍Coordinates: Yandex Maps
#MoscowRegion
🏙️Beyond Moscow🏔️
Off-Duty Police Officer Disarms Aggressor Armed with Two Knives in Moscow Region
In Pushkinsky district, an off-duty officer stopped a drunk man wielding two knives. Despite threats and a chest injury, the officer used a sambo technique to subdue the attacker and called for backup. The victim received medical aid and is in stable condition. A criminal case has been opened for violence against authority.
“Risking their lives, my colleagues fight crime even off duty,” said Irina Volk, Ministry of Internal Affairs.
#Russia#Police#Safety#MoscowRegion
The main news of Russia and the world ishere.
Мусаелян Марьяна 02.11.2021
(диагноз СМА 1 тип).
Сбор на Виброплатформу Галилео S35 на сумму 650.000 рублей.
Друзья, сегодня мы хотим познакомить вас с нашей новой подопечной Марьяной Мусаелян. Диагноз малышки – СМА 1 типа. Раньше он звучал как приговор. Родители узнали о тяжелой болезни дочери, когда девочке было 8 месяцев, до этого времени она росла и развивалась абсолютно нормально.
После подтверждения диагноза семья незамедлительно обратилась в фонд «Круг добра», который помог обеспечить лечение Марьяны самым дорогим в мире препаратом «Золгенсма», восстанавливающим «поломанный» ген.
Тем не менее, для полного восстановления, ребенку, помимо лечения, необходима постоянная реабилитация, одним из наиболее эффективных средств, рекомендованных Марьяне лечащими врачами, является виброплатформа Галилео.
Ее технология эффективно и с доказанным успехом используется для реабилитации детей с диагнозами ДЦП и СМА, для восстановления после травм, развития и совершенствования координации.
Платформа заменяет трех специалистов и дает возможность заниматься самостоятельно дома.
Стоимость виброплатформы для многодетной семьи Марьяны непосильна, но объединив усилия, вместе мы сможем помочь малышке на ее пути к полноценной и здоровой жизни.
Оказать посильную помощь в приобретении виброплатформы для Марьяны можно любым удобным способом: 🧚♀️
🔹 Отправить СМС на номер 3⃣4⃣3⃣4⃣ с текстом ВАЖНЫЕ 500, где 500 – любая сумма пожертвования.
🔹Больше способов помочь на сайте:
https://fond-vl.ru/campaign/musaelyan-maryana/
🔹Также можно осуществить перевод на указанные реквизиты:
Сбербанк
Р/с: 40701810540000000720
ИНН: 5044120150
БИК: 044525225
Назначение платежа: Мусаелян Марьяна
🔹А еще вы можете поделиться этим постом в своих социальных сетях, чтобы как можно больше людей смогли помочь малышке Марьяне💙
#Виброплатформа#Галилео#Вибротренажер#Московскаяобласть#пожертвование#благотворительность#помогатьлегко#творидобро#доброеутро#реабилитация#детскиезанятия#помочьребенку#многодетнаясемья#многомама#Волоколамский_район#Кашино#благотворительныйфонд#фонд#помощьрядом#важныелюди#важенкаждый#СМА#реквизитыпомощи#посильнаяпомощь#Подмосковье#нашеподмосковье#Москва#moscowregion