Что делать если нужно поставить какую-то 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 pinpointed the exoplanet LP 890-9 c, located about 105 light-years away in the constellation Eridanus, as one of the most promising places for life outside our solar system. This rocky world orbits within its star’s habitable zone—the region where temperatures could allow liquid water to persist, making it a key target in the search for planets that might support life as we know it. ✨
#exoplanets⚡#habitability⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 Just 12 light-years away, the red dwarf star Teegarden’s Star hosts two Earth-sized exoplanets, Teegarden’s Star b and c, both located in the star’s habitable zone. This zone is the area around a star where temperatures could allow liquid water to exist—a key ingredient for life as we know it—making these planets some of the most intriguing nearby candidates in the search for life beyond our solar system. ✨
#exoplanets⚡#habitablezone⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Astronomers have found hints that life could exist in the clouds of Venus, where temperatures and pressures about 50 kilometers above the surface become surprisingly mild—unlike the planet's scorching surface below. While Venus’s atmosphere is highly acidic, scientists have detected unusual patterns of sulfur compounds that might be explained by unknown chemical processes or possibly even tiny airborne microbes adapted to these harsh conditions. ✨
#Venus⚡#astrobiology⚡#atmosphere⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Deep beneath the icy surface of Jupiter’s moon Callisto, scientists believe there is a salty ocean more than 100 kilometers thick. The presence of this hidden ocean, combined with a surface rich in organic compounds (carbon-based molecules essential for life), makes Callisto another intriguing candidate for life beyond Earth. ✨
#Callisto⚡#astrobiology⚡#oceans⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Scientists studying Saturn’s moon Rhea have spotted hints of a thin atmosphere made of oxygen and carbon dioxide—an extremely rare find among icy moons. While this atmosphere is very tenuous (about 5 trillion times thinner than Earth's), its presence sparks interest in how chemical processes on Rhea’s surface, possibly driven by sunlight or charged particles from Saturn’s rings, might offer clues about where life’s ingredients could gather even in far-off, frozen places. ✨
#Rhea⚡#astrobiology⚡#moons⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 Within our solar system, scientists have discovered that the subsurface ocean of Neptune’s moon, Triton, could provide the right conditions for life despite its bitterly cold surface. Tidal forces, or gravitational stretching from Neptune, may keep this hidden ocean liquid beneath Triton’s icy shell, making it a fascinating target in the ongoing search for places where life could exist beyond Earth. ✨
#Triton⚡#ocean⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 One of the most intriguing places where life could exist is inside the clouds of Jupiter, the largest planet in our solar system. While the surface and deep atmosphere are far too hostile, certain layers of Jupiter's thick cloud tops reach mild temperatures and pressures similar to those found on Earth’s surface, leading scientists to consider if floating microbes—like those in Earth’s high atmosphere—could possibly survive in this extreme environment. ✨
#Jupiter⚡#astrobiology⚡#cloudlife⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 Jupiter’s moon Europa hides a vast, salty ocean beneath its icy surface, making it one of the best places to look for life beyond Earth. This subsurface ocean, kept liquid by tidal forces (the push and pull from Jupiter’s gravity), may contain more water than all of Earth’s oceans combined, providing a stable environment where life could potentially thrive deep below the ice. ✨
#Europa⚡#ocean⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Saturn’s tiny moon Enceladus harbors a global ocean beneath its icy crust, and scientists have detected plumes of salty water and organic molecules—building blocks of life—eruption from cracks near its south pole. These discoveries suggest that Enceladus may offer the right conditions for simple life to exist, hidden far below the frozen surface. ✨
#Enceladus⚡#astrobiology⚡#ocean⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Scientists have discovered that Mars’ Jezero Crater once held an ancient lake, where water persisted long enough to form river deltas and deposit clay minerals—materials that can preserve signs of life for billions of years. The Perseverance rover is now exploring this region, searching for tiny fossilized microbes that may have thrived in Mars' watery past. ✨
#Mars⚡#Perseverance⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Scientists have found that the atmosphere of Venus contains traces of phosphine, a gas that on Earth is mainly produced by living organisms, sparking renewed interest in whether microbial life could exist in Venus’s thick clouds. The surface of Venus is scorching hot and uninhabitable, but its upper cloud layers offer milder temperatures and unique chemistry, making this hostile world an unexpected target in the search for possible life beyond Earth. ✨
#Venus⚡#biosignatures⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 Deep below the surface of the dwarf planet Ceres, scientists have found evidence for salty liquid water—brines—existing within its crust. Observations from NASA’s Dawn spacecraft show that Ceres’s bright spots are deposits left behind by recent briny water seeping up, hinting that this small world might still hold environments where simple life could survive, far from the warmth of the Sun. ✨
#Ceres⚡#brines⚡#astrobiology⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels