Что делать если нужно поставить какую-то 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
🌎 An ancient mystery lingers at the center of our galaxy—a supermassive black hole called Sagittarius A*. Its powerful gravity bends space and time, hiding beyond a swirling cloud of stars and gas. This invisible giant shapes the Milky Way, anchoring everything around it with immense, unseen force. ✨
#space⚡#blackhole⚡#universe
👉subscribe Interesting Planet
🌎 In 2020, astronomers detected a mysterious object named “The Cow,” a fast and extremely bright stellar explosion. Unlike normal supernovas, “The Cow” rapidly peaked in brightness, confounding scientists. Follow-up observations revealed it was likely the birth of a black hole or neutron star—providing a rare view of a star’s collapse in real time. ✨
#astronomy⚡#supernova⚡#blackhole
👉subscribe Interesting Planet
👉more Channels
BlackHole
Music Player made with Flutter
Features
Best Streaming Quality (320kbps)
Music Search
Trending Songs
Support 15+ music languages
Local and Global Top Spotify songs
Add Songs to Favorite
Playlists support
Import Playlists from Spotify
Sleep timer
Lyrics Support
Listening history record
Dark mode / accent color
Download for offline play (320kbps with ID3 tags)
Play Online as well as Offline Songs
Queue Management
Auto Update Check
Cache support
No Subscription
No Ads
More to come...
Download https://github.com/Sangwan5688/BlackHole/releases
Channel @blackhole_channel
Group https://t.me/joinchat/fHDC1AWnOhw0ZmI9
#BlackHole#Music#Player
🌎 At the center of our Milky Way galaxy lies Sagittarius A*, a supermassive black hole around 4 million times the mass of the Sun. It exerts a powerful gravitational pull, causing nearby stars to orbit at incredible speeds—some over 5,000 kilometers per second. ✨
#astronomy⚡#blackhole⚡#galaxy
👉subscribe Interesting Planet
👉more Channels
🪐 The galaxy NGC 1277 in the Perseus constellation harbors an ultramassive black hole that makes up a staggering 14% of its entire mass—a proportion far greater than in any typical galaxy. This enigmatic black hole has puzzled scientists, as such a gigantic ratio defies cosmic norms and hints at a forgotten chapter in the history of galactic evolution. ✨
#galaxies⚡#blackhole⚡#mystery
👉subscribe Universe Mysteries
🪐 The dusty core of the elliptical galaxy Centaurus A (NGC 5128) hides a colossal jet of high-energy particles, launched from a supermassive black hole and stretching over 1 million light-years into intergalactic space. X-ray and radio images reveal this jet carving through the surrounding gas, shaping the galaxy’s strange appearance and fueling vast lobes that glow in the cosmic void. ✨
#CentaurusA⚡#blackhole⚡#galaxy
👉subscribe Universe Mysteries
🪐 In the galaxy SDSS J135154.46+132719.1, astronomers have observed a striking phenomenon: a supermassive black hole that was caught being "kicked" out of its galaxy at nearly 7.5 million kilometers per hour. This cosmic eviction is thought to be caused by the merged black holes’ gravitational waves pushing the giant object away—an extreme event where the very heart of a galaxy is flung into intergalactic space. ✨
#phenomena⚡#galaxy⚡#blackhole⚡#nasa⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🌎 Deep within the constellation Cygnus, the black hole V404 Cygni occasionally unleashes powerful outbursts, ejecting matter at near light-speed in opposing jets. These rare events are so energetic that the black hole briefly outshines its entire host galaxy, offering a fleeting glimpse into the turbulent ballet around stellar remnants. ✨
#blackhole⚡#cygnus⚡#jets
👉subscribe Universe Mysteries
🪐 In the Perseus Cluster, a supermassive black hole at the center of the galaxy NGC 1275 sends out powerful sound waves that ripple through the surrounding gas. These cosmic vibrations have wavelengths so vast—spanning around 30,000 light-years—that they produce the deepest note ever detected, 57 octaves below middle C, making it a real, albeit inaudible, “song” of the universe. ✨
#PerseusCluster⚡#blackhole⚡#astronomy⚡#nasa⚡#galaxy⚡#stars⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries