Что делать если нужно поставить какую-то 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
🇧🇪#Belgium: An explosion occurred earlier today outside a synagogue in the city of Liège, causing damage to the building and nearby windows. No injuries were reported.
Authorities established a security perimeter around the site, and Belgium’s federal prosecutor’s office, which handles terrorism and organized crime cases, has taken over the investigation. Officials have not yet released further details about the cause of the explosion, though local authorities described the incident as an "antisemitic act".
(via BBC)
Belgium, Bruges🇧🇪
Christmas Magic in Bruges! 🎄💫
In December Bruges comes alive with twinkling lights, joyful spirits and Christmas markets, of course. 🫶
Wandering through the cobbled streets adorned with festive stalls, where the aroma of mulled wine dances in the crisp winter air is something else. ❤️
⭐️
Who would you visit Bruges with?
#Belgium
@voyage
Belgium, City of Bruges🇧🇪
Bruges is a small Belgian city and the capital of West Flanders. Once the unofficial economic capital of Northwestern Europe, it has now become an important tourist center of the continent. 🏰🏙
Well-preserved medieval quarters in the historic center, crisscrossed by canals, have earned Bruges the rightful claim to be called the "Venice of the North."
#Belgium
@voyage
Rum — Rum (Philips, 1972)
#traditional#Belgium
Первый альбом бельгийской фолк-группы Rum, исполнявшей традиционную и академическую музыку, среди которой — сочинения юриста и композитора Флоримона Ван Дуйса (Florimond Van Duyse), собиравшего голландские, фламандские и валлонские народные песни и опубликовавшего их в нескольких сборниках, которыми, видимо, и воспользовались Rum.
Telegram
🇧🇪#Belgium - 🇬🇧#UK / 🇮🇱#Israel: Belgian authorities seized two UK-origin shipments of military components bound for Israel after they arrived at Liège Airport on March 24th, where they had been scheduled for onward transport to Tel Aviv two days later.
The cargo reportedly included fire-control systems and spare parts for military aircraft. A criminal case was opened as a result of this discovery.
Walloon Minister-President Adrien Dolimont said this was not the first such case uncovered at Liège, adding that it is often difficult to identify military cargo.
He stated that, in this case, the law had clearly not been respected, stressing that no transit licence had been requested, and regardless of request, such a transfer would have been refused under Belgium’s current policy.
(via declassifiedUK)
Happy Saxophone Day!
🎷🎵🎶
The saxophone was invented by Belgian Adolphe Sax in the early 1840s — his birthday, Nov 6, is celebrated as National Saxophone Day.
Feel free to post saxophone music in the comments.
[read more here]
@googlefactss#funfact#saxfact#history#Belgium
't Kliekske — Instrumentaal (CBS, 1978)
#medieval#traditional#Belgium
't Kliekske — бельгийская группа, исполнявшая старинную традиционную фламандскую музыку. Они собрали бесчисленное количество народных песен, мелодий, танцев и инструментов. Один из участников коллектива, Герман Девит, занимался реконструкцией старинных инструментов. В 1995 году Герману было присвоена степень доктора за его исследования и исполнение народной музыки. Группа также являлась инициатором ежегодных курсов народной музыки сначала в Гальмаардене, а затем в Пайоттенланде. На этом альбоме собраны записи произведений из рукописи, обнаруженной Гисленом Потвлиге (Ghislain Potvlieghe) во фламандской деревне Виан.
Telegram
🇱🇻#Latvia - 🇪🇪#Estonia - 🇧🇪#Belgium: Latvia, Estonia, and Belgium have become the first NATO countries to begin deploying the "Blaze" fully autonomous interceptor drone system along their borders amid increasing reports of unauthorized drone incursions in their airspace.
Developed and manufactured in Latvia by Origin Robotics, the Blaze is an autonomous counter-drone interceptor designed to detect, track, and destroy hostile drones and other fast moving aerial targets using radar, AI powered computer vision, and a high explosive fragmentation warhead.
(via Origin Robotics)
🇫🇷#France - 🇮🇹#Italy / 🇬🇷#Greece / 🇪🇸#Spain / 🇧🇪#Belgium: Troops from several countries (Greece, Italy, Spain, and Belgium) have conducted river-crossing exercises in France’s Aube region alongside French troops.
The exercises are part of the broader Orion 2026 military training program.
(via AFP)
Lukas De Clerck — The Telescopic Aulos of Atlas (Ideologic Organ, 2024)
#aulos#drone#ambient#Belgium
Лукас Де Клерк в своём дебютном сольном альбоме исследует возможности телескопического авлоса — современной интерпретации древнегреческого инструмента, исчезнувшего более тысячелетия назад. Его работа находится на пересечении экспериментальной музыки, таких направлений как дрон и постминимализм, и современных археомузыкологических исследований.
🔗AppleMusic | Spotify | Deezer | SoundCloud | Bandcamp