Что делать если нужно поставить какую-то 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
Channel: Golden Spikes Detector
Members: ~2.99K
💢 Username: @goldenspikes
Description:
This channel is for our indicator and robot Golden Spikes Detector. You can get free trial signals that are generated by our system. We have been improving daily and the accuracy of our system is now excellent.
🏷 Tags: #crypto_fx_trading
#forex_trading#indicators#boom_and_crash_indices_trading#crypto#betting
https://lve.to/tgttzfuv8u
Polymarket Thrives Amid Trader Growth
Betting platform Polymarket defies expectations, expanding active traders by over 50% to 462,000 since November. However, open interest dropped significantly from $500M to $100M, and trading volume halved from a peak of $2.6B to $1.2B. For detailed insights, visit Forklog's news.
#Polymarket#Betting#Trading#Crypto#Finance#MarketTrends#StakeholderEngagement#UserGrowth#Blockchain
🚀 Lakers vs. Jazz NBA Game Draws Significant Bet on Polymarket
A significant bet has been placed on the Los Angeles Lakers defeating the Utah Jazz in the NBA regular season game, according to Odaily. An account with a winning probability exceeding 66% invested $200,000 on the Lakers' victory, with an average opening price of 91¢.
The game between the Lakers and the Jazz commenced today at 8:30 AM UTC+8. This marks the final day of the NBA regular season. The Lakers currently hold a record of 52 wins and 29 losses, placing them third in the Western Conference, while the Jazz have a record of 22 wins and 59 losses, ranking them 15th in the same conference.
#Lakers#Jazz#NBA#Polymarket#Betting#NBASeason#WesternConference#LakersVsJazz#Basketball
🚀 Significant Bet Placed on Thunder in NBA Regular Season Matchup Against Clippers
A notable prediction event on Polymarket involves a user with a win rate exceeding 58% who has invested $270,000 on the Oklahoma City Thunder defeating the Los Angeles Clippers. According to Odaily, the average opening price for this bet was 76.2¢.
The NBA regular season game between the Thunder and the Clippers commenced today at 10 a.m. UTC+8. As the game progresses into the first quarter, the Thunder hold a record of 63 wins and 16 losses, placing them first in the Western Conference. Meanwhile, the Clippers are ranked eighth with a record of 41 wins and 38 losses.
#NBA#Thunder#Clippers#Polymarket#Betting#OklahomaCityThunder#LosAngelesClippers#WesternConference#Basketball#NBASeason
🚀 High-Stakes Bet on Bulls vs. Wizards NBA Game
A significant wager has been placed on the Polymarket prediction platform regarding the NBA regular season game between the Chicago Bulls and the Washington Wizards. According to Odaily, an account with a history of over $4.3 million in losses has invested $150,000 on the Bulls to win against the Wizards with a 5.5-point spread, at an average opening price of 56 cents. Additionally, the same account has placed a $40,000 bet on the Bulls to win with a 6.5-point spread, at an average opening price of 50.9 cents.
The NBA regular season game between the Bulls and the Wizards commenced today at 7 a.m. UTC+8. As the season nears its conclusion, the Bulls hold a record of 30 wins and 49 losses, placing them 12th in the Eastern Conference. Meanwhile, the Wizards have a record of 17 wins and 62 losses, ranking 15th in the Eastern Conference.
#HighStakesBet#BullsVsWizards#NBA#Polymarket#ChicagoBulls#WashingtonWizards#NBASeason#Betting#SportsBetting#PointSpread#BasketballBetting#EasternConference