Что делать если нужно поставить какую-то 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
⚡️TON Society: Join the Global TON Nation Tournament Now!
#TON#tournament
TON Society invites everyone to participate in the TON Nation Tournament held in @TON_Battleground, offering communities worldwide a chance to win 500 $TON for local events. The tournament runs from May 22nd to June 14th, with various global communities such as TON Africa, TON UAE, and TON Europe competing.
Source: link
@tonlines
“Yangi O‘zbekiston” universiteti talabalari Zakovat intellektual o‘yinida g‘olib bo‘lishdi
🌐 Toshkent shahrida D.I. Mendeleev nomidagi Rossiya kimyo-texnologiya universitetining filialida tashkil etilgan Zakovat turnirida 4 ta universitetdan jami 10 ta jamoa kuch sinashishdi.
✅ Turnir natijalariga ko‘ra:
1-o‘rin “Yangi O‘zbekiston” universiteti jamoasi
2-o‘rin Jahon iqtisodiyoti va diplomatiya universiteti jamoasi
3-o‘rin D.I. Mendeleev nomidagi Rossiya kimyo-texnologiya universitetining filali jamoasi egalladi.
🎗Talabalarimizni g‘alaba bilan tabriklaymiz!
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#zakovat#tournament
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
⚡️Storm Trade: Jetton Tournament Winners Announced
#Jetton#tournament
The Storm Trade channel has distributed a total of 5,000 USDT from the Jetton trading tournament prize pool. Half of the 60 participants received rewards, with the top trader earning $3,000 in profit and a $1,500 reward.
Source: link
@tonlines
Fanton EN: EPL Tournament Begins Soon!
#EPL#tournament
Fanton EN announces that the EPL tournament with a $300 prize pool is starting in 1.5 hours. Participants can enter for a 9 USDT fee and compete in the 4+1 format.
Source: link
@tonlines
⚡️Fanton EN: Exciting Grand Tournament Returns!
#Tournament#EPL
Fanton EN announces the return of the EPL Grand Tournament with a $5,000 prize pool. The tournament will take place on April 19–20 and offers thrilling competition for participants with a $9 USDT entry fee.
Source: link
@tonlines
⚡️MRKT: Last Hours of PvP Tournament Finale
#PvP#Tournament
The MRKT channel announces that there are only 9 hours left in the Autumn Open League PvP Tournament. Participants still have the chance to improve their standings with every fight, stake, and point.
Source: link
@tonlines
⚡️Gatto Official Channel: Weekend Tournament Rescheduled
#tournament#PvP
The Gatto Official Channel has announced the cancellation of the weekend tournament due to technical improvements in PvP mode. The event has been rescheduled to April 25, with double rewards offered for skipping. More details will be provided on the event day.
Source: link
@tonlines
Gatto | Official Channel (18+): Weekend Tournament Details
#GattoVerse#Tournament
GattoVerse is hosting a high-stakes Weekend Tournament starting today and ending on May 12. Participants in the PvP battles for $GTON can win prizes, including gold coins and exclusive Gattoboxes.
Source: link
@tonlines
🫡🫡🫡СМОТРИТЕ СЕЙЧАС: СЕДЬМОЙ МАТЧ В РАМКАХ DPC!
Все прогнозы сделаны, все слова сказаны. Пришло время главного — смотреть игру♟️Virtus Pro против 🤩 ex.27PlusGeneration X.
Подключайтесь к трансляциям, болейте за любимую команду и следите за разбором от наших комментаторов!
😀DPC#7. VP vs 27GENX
😀DPC#7. VP vs 27GENX
➿➿➿➿➿❤️➿➿➿➿➿
😀Telegram-chat | 😀YouTube
#tournament#DPC
😀😀😀😀😀
ДО ГЛАВНОГО МАТЧА ЛЕТА – МЕНЬШЕ ЧАСА!
Совсем скоро стартует шестой тур DOMINANT PLAYERS CHAMPIONSHIP, и нас ждёт настоящее огненное противостояние! В битве за корону сразятся коллективы ♟Dagestan77 и ♟️Virtus Pro.
Не пропустите начало трансляции – она начнётся уже в 16:00 (МСК) на нашем YouTube-канале!
➿➿➿➿➿❤️➿➿➿➿➿
😀Telegram | 😀YouTube
#DPC#tournament
🫡🫡🫡
ПРИШЛО ВРЕМЯ ЗВЁЗД!
Свой первый матч в DOMINANT PLAYERS CHAMPIONSHIP через несколько минут начнёт коллектив ♟Dagestan77! В соперниках – крепкие парни из ♟️Secret Way. В этом противостоянии нет однозначного фаворита, а значит наблюдать за игрой будет намного интереснее!
Одержат ли верх Keep и LimboBoom над своей бывшей командой, или дагестанцы вывезут этот поединок "на опыте"? Узнаем ответ совсем скоро, а пока приглашаем присоединиться к трансляции!
😀DPC#5. SW vs DG77
➿➿➿➿➿❤️➿➿➿➿➿
😀Telegram | 😀YouTube
#tournament#DPC
🫡🫡🫡
КТО ОСТАНЕТСЯ НА ВЕРШИНЕ? СМОТРИМ DPC#3 В ПРЯМОМ ЭФИРЕ!
Сегодня в поединке сойдутся
😘KODIAQ и 🌟YIKES, чтобы выяснить, кто окажется сильнее и пройдет в DPC#4.
Сможет ли KODIAQ защитить титул? Делитесь мнением в комментариях и заходите на трансляцию поддержать любимую команду!
😀ТРАНСЛЯЦИЯ
➿➿➿➿➿❤️➿➿➿➿➿
😀Telegram | 😀YouTube
#tournament#DPC