Что делать если нужно поставить какую-то 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
STON.fi Invites Creators for Omniston Protocol Bounty
#TON#Omniston
STON.fi has launched a video contest to promote the Omniston protocol, a key liquidity aggregation solution for the TON community. Creators can submit videos by May 15 for a chance to win a share of the $2,500 prize pool.
Source: link
@tonlines
⚡️STON.fi: Key Insights from Paris Blockchain Week
#Omniston#DeFi#TON
STON.fi, during the Paris Blockchain Week, highlighted its new decentralized liquidity aggregation protocol, Omniston. This protocol enhances access to DeFi liquidity on TON through a single integration point, and future plans include cross-chain swaps and expansion into EVM-compatible chains.
Source: link
@tonlines
⚡️The Open Platform: STON.fi Celebrates Its Third Anniversary!
#STON#Omniston
The Open Platform announces the third anniversary of STON.fi, which evolved from a simple AMM protocol to TON Blockchain’s largest DeFi product, boasting $6.65B in volume and over 5.6M users. Omniston, a decentralized liquidity aggregation protocol, and the launch of a DAO mark key milestones in its journey.
Source: link
@tonlines
STON.fi Launches Instagram Stongram Challenge!
#STON#OMNISTON
STON.fi has expanded to Instagram and is hosting the Stongram Challenge, offering participants a chance to win a share of $500 in $STON. To enter, users must follow their Instagram, create a standout story about STON.fi, and tag them. Winners will be announced on May 6.
Source: link
@tonlines
🗿Omniston: Open Beta
Liquidity aggregation protocol from the ston.fi team has entered open beta! Users now have access to all $TON liquidity directly in the #DEX interface.
Currently, three resolvers are connected to Omniston: STONfi, SwapCoffee and moki. Thanks to their competition, users get the best exchange rate.
ℹ️ A resolver is a service that executes trades by receiving liquidity from various DEXs in TON.
Everyone can try #Omniston right now. To do this, go to the settings on the exchange page and enable it. During the testing phase, the exchange volume is limited to $1000
🔗Try Omniston now
📖Read more about Omniston
💬 We believe the future of finance is built together. Omniston represents a significant step toward our future cross-chain functionality, which will connect TON's liquidity with other blockchain ecosystems.
— ston.fi team
#STONfi#TON#Omniston
⭐️Breaking News from 🙏STON.fi
Yesterday, the revolutionary Omniston protocol was launched. According to representatives of STON.fi, this service will completely change the idea of trading in the blockchain.
The protocol is currently only available to developers. Users will be able to use the protocol after verifying its flawless functionality.
📊What is Omniston used for?
Omniston combines the liquidity of multiple DEXs and CEXs to provide the best exchange rates. Thus, omniston is an aggregator that is not limited to DEX only.
❓How does this work?
To provide data on the most favorable offers on the market, the protocol uses RFQ (request for quote) — a protocol that creates, collects and analyzes requests from resolvers and DEX with price offers for specific trades.
RFQ operates off-chain, meaning it does not require gas to operate. The protocol does not interact with funds, it only interacts with data, which ensures the safety of users' funds.
↔️The Future of Omniston
As you know, simultaneously with the development of Omniston, the STONfi team is developing a cross-chain. In the near future, the protocol will be able to find proposals between the TON and TRON networks.
➡️ You can find more detailed information about the protocol and learn how to integrate it into your project on the official Omniston page.
#Omniston#Stonfi#TON#DEX
STON.fi Showcases Omniston at Paris Blockchain Week
#Omniston#ParisBlockchainWeek
STON.fi participated in three key events during Paris Blockchain Week, highlighting their Omniston project. This decentralized liquidity aggregation protocol, built for the TON blockchain, was presented at both the TON Builders Matchup and RedStone France meetup.
Source: link
@tonlines