Что делать если нужно поставить какую-то 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
🌎 Hidden in the vast cosmic darkness, rogue planets drift alone through space without orbiting any star. These “orphan worlds” form when gravitational forces eject young planets from their home systems. Some estimates suggest our galaxy may contain more rogue planets than stars. ✨
#universe⚡#astronomy⚡#exoplanets
👉subscribe Interesting Planet
🌎 Some distant planets, called rogue planets, drift through space unattached to any star. Astronomers estimate there could be billions of these planets in our galaxy alone. ✨
#astronomy⚡#exoplanets⚡#cosmos
👉subscribe Interesting Planet
👉more Channels
🌎 In 2016, astronomers discovered TRAPPIST-1, a star system 40 light-years away with seven Earth-sized planets. Three orbit in the "habitable zone," where liquid water could exist—making it one of the most promising sites for searching for alien life beyond our solar system. ✨
#astronomy⚡#exoplanets⚡#habitable
👉subscribe Interesting Planet
🪐 The ultra-dense pulsar PSR B1257+12, located in the constellation Virgo about 2,300 light-years from Earth, hosts the first confirmed exoplanets ever discovered. These three worlds—each orbiting this spinning neutron star—endure intense radiation, making them some of the most hostile planets in the known galaxy. ✨
#pulsars⚡#exoplanets⚡#neutronstars
👉subscribe Universe Mysteries
🪐 In 2016, astronomers using the Hubble Space Telescope observed the exoplanet WASP-121b, where temperatures in its stratosphere soar above 2,500°C and molecules such as water vapor exist as glowing, superheated gas. The planet’s intense gravity causes it to stretch into a teardrop shape, while metals like iron and magnesium escape its atmosphere, streaming into space in a shimmering trail. ✨
#exoplanets⚡#atmosphere⚡#extremes
👉subscribe Universe Mysteries
🪐 Exoplanet 2MASS J2126–8140 holds the record for the widest known orbit around its star—about 1 trillion kilometers away, or nearly 7,000 times the distance from Earth to the Sun. This gas giant drifts so far from its host that a single "year" there lasts nearly 900,000 Earth years, exposing it to the coldest, loneliest planetary conditions ever measured. ✨
#exoplanets⚡#extremes⚡#space⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos
👉subscribe Universe Mysteries
👉more Channels
🪐 In 2023, scientists used the James Webb Space Telescope to study the atmosphere of the exoplanet K2-18b, located about 120 light-years away in the constellation Leo, and detected molecules like methane and carbon dioxide in its thick atmosphere. While this doesn't prove the existence of aliens, these chemicals are considered potential signs that could support life as we know it, making K2-18b one of the most intriguing worlds in the ongoing search for extraterrestrial life. ✨
#aliens⚡#exoplanets⚡#astronomy⚡#nasa⚡#galaxy⚡#stars⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Some of the loneliest travelers in the galaxy are rogue planets, which drift through space without orbiting any star. Astronomers have detected dozens of these starless worlds, like the giant PSO J318.5-22, floating about 80 light-years from Earth and glowing faintly in infrared as they slowly cool in the darkness. Rogue planets can form the same way as regular planets or be kicked out of their solar systems by gravitational encounters, making them true cosmic wanderers. ✨
#rogueplanets⚡#exoplanets⚡#space⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos
👉subscribe Universe Mysteries
👉more Channels
🪐 Astronomers have identified the super-Earth exoplanet HD 40307g, located about 42 light-years away in the constellation Pictor, as a promising candidate for life because it may orbit within its star’s habitable zone—the region where temperatures could allow liquid water on the surface. With a mass at least seven times that of Earth and the right distance from its parent star, HD 40307g offers a real-world example of a potentially life-friendly world beyond our solar system. ✨
#exoplanets⚡#habitable⚡#universe⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 The star WD 1856+534, located about 80 light-years away in the constellation Draco, is an unusually cool and faint white dwarf orbited by a giant planet-sized object at incredibly close range. This is remarkable because white dwarfs are dense, burned-out remnants of stars like our Sun, and scientists believe any planet this close should have been destroyed during the star’s previous red giant phase—making this system an exceptional survivor among stars. ✨
#stars⚡#white_dwarfs⚡#exoplanets⚡#nasa⚡#galaxy⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 In 2020, researchers using the LOFAR radio telescope detected strange bursts of low-frequency radio waves coming from the red dwarf star GJ 1151, about 26 light-years from Earth. These signals are thought to be created by interactions between the star and an orbiting planet, and while not proof of aliens, such emissions spark excitement because similar interactions could reveal planets that might host life. ✨
#aliens⚡#exoplanets⚡#radio⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 The exoplanet LTT 9779b, discovered about 260 light-years away in the constellation Sculptor, is known as an "ultra-hot Neptune" because it orbits its star so closely that its dayside temperature climbs above 1,700°C—hot enough to vaporize metals. Despite these extreme conditions, observations with the Hubble and Spitzer telescopes have revealed a reflective, metallic atmosphere loaded with silicate (rock-forming mineral) clouds, making this planet a shimmering furnace world unlike any found in our solar system. ✨
#exoplanets⚡#extremes⚡#neptune⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries