Что делать если нужно поставить какую-то 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
🌎 Astronomers have detected rapid radio bursts—millisecond-long signals from distant space. These intense pulses hint at extreme events, like collapsing stars or magnetars, yet their exact origin remains one of space’s most intriguing mysteries. ✨
#astronomy⚡#space⚡#mysteries
👉subscribe Interesting Planet
🌎 Space isn’t silent—astronomers have recorded eerie “whistles” and “choruses” from planets like Jupiter. These radio waves, caused by charged particles moving through magnetic fields, are transformed into sound waves we can hear when played back on Earth. The haunting tunes of space reveal hidden cosmic activity all around us. ✨
#astronomy⚡#space⚡#mysteries
👉subscribe Interesting Planet
🌎 Off the coast of Scotland, the Orkney Islands’ Tomb of the Eagles is a Stone Age burial site containing over 16,000 human and animal bones. Archaeologists discovered that the tomb, built around 3150 BCE, was used for more than 800 years before being sealed. ✨
#archaeology⚡#mysteries⚡#prehistory
👉subscribe Interesting Planet
🌎 The "Bloop" is one of the loudest underwater sounds ever recorded. Detected by NOAA hydrophones in 1997, this low-frequency noise was picked up over 5,000 kilometers apart. Scientists later identified melting icebergs as the likely source, not a sea creature or submarine volcano. ✨
#ocean⚡#sound⚡#mysteries
👉subscribe Interesting Planet
👉more Channels
🌎 Mysterious low-frequency sounds known as "The Upsweep" have been picked up by underwater microphones in the Pacific Ocean since 1991. This persistent sound rises and falls in pitch, lasts several seconds, and is strongest in spring and autumn. Its source remains unidentified, but some researchers suggest volcanic activity near the origin point may be involved. ✨
#ocean⚡#mysteries⚡#sound
👉subscribe Interesting Planet
👉more Channels
🌎 On the border between Egypt and Sudan lies Bir Tawil, a peculiar territory claimed by neither country. Due to a mapping oddity, Bir Tawil is one of the world’s rare “unclaimed” lands, standing as a real-life no man’s land on modern maps. ✨
#geography⚡#borders⚡#mysteries
👉subscribe Interesting Planet
🌎 The Brandberg Mountain in Namibia is famous for its mysterious White Lady rock painting, estimated to be at least 2,000 years old. Archaeologists debate whether the figure represents a woman, man, or ritual dancer, and the exact meaning of the painting remains unclear. The site contains over 45,000 individual rock paintings. ✨
#archaeology⚡#Namibia⚡#mysteries
👉subscribe Interesting Planet
👉more Channels
🌎 The underwater Stone Circles of Lake Michigan were discovered in 2007 by archaeologists using sonar. The stones are arranged in a circle about 12 meters below the surface. One stone features a carving resembling a mastodon, hinting at a possible age of over 10,000 years. ✨
#mysteries⚡#archaeology⚡#lake
👉subscribe Interesting Planet
👉more Channels
🌎 Bolshoi Zayatsky Island in Russia’s White Sea features hundreds of mysterious stone labyrinths, or “Babylons,” built by unknown people. Most date back 2,000–3,000 years. Archaeologists suggest they served ritual or astronomical purposes, but their exact function remains unproven. ✨
#mysteries⚡#archaeology⚡#Russia
👉subscribe Interesting Planet
👉more Channels
🌎 The ancient city of Hattusa, capital of the Hittite Empire, features massive stone walls, elaborate gates, and mysterious underground tunnels. Archaeologists found cuneiform tablets here describing treaties, religions, and daily life. The site was abandoned around 1200 BCE for unknown reasons. ✨
#Hittite⚡#archaeology⚡#mysteries
👉subscribe Interesting Planet
👉more Channels
🌎 The disappearance of 20,000-year-old giant cave art in Chauvet Cave, France, puzzles scientists. Some images faded, while others vanished completely, possibly due to natural mineral changes, humidity, or hidden collapses in the limestone walls. The cave holds more than 1,000 preserved prehistoric paintings and engravings. ✨
#archaeology⚡#mysteries⚡#art
👉subscribe Interesting Planet
👉more Channels
🌎 Deep in the Ural Mountains of Russia, the remote plateau called Manpupuner features seven enormous stone pillars, each up to 42 meters tall. These ancient rock formations, shaped by frost and wind over millions of years, were considered sacred by Indigenous Mansi people. The pillars’ unique shapes and mysterious origin make them one of Russia’s least accessible and most enigmatic natural monuments. ✨
#geology⚡#mysteries⚡#Russia
👉subscribe Interesting Planet