Что делать если нужно поставить какую-то 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
Boost Your Space Bucks with Missions! ✅
No time to explain - need more space bucks to get started with your ship upgrades? Head straight to the 👉Missionstab where new tasks pop up regularly to help you on your journey, and they’re your best bet to grab some extra Space Bucks.
On top of Moonplaytasks (hope you’ve done them already), we’ve got 7 exclusive missions brought to you by Magic Square🤩 - easy actions that reward you with even more Space Bucks.
Keep an eye on the Missions tab - more missions are coming your way to maximize your rewards!
Stellar adventures start here:@moon_land_bot🚀
Website | Telegram Chat | X | Discord | Medium
#ToTheMoon#MagicSquare#ecosystem#blockchain#gamefi#web3#wenlisting#airdropsoon#communityfirst#taptap#clicker#game
🏷 Start of presale from Fanton
🟡Placement will take place on August 7th at 11:00 UTC on the Magic Square platform
🟡Presale price – $0.023 (5% discount to the IDO price)
🟡Total raised amount – $150,000
🏆 We want to remind you that $FTON is a utility token for the Fanton Fantasy game, necessary for playing in project's tournaments. Token owners will be able to participate in staking and ⛏ farming, receive in-game bonuses, and also have exclusive right to purchase NFT cards of the project.
The first part of FCFS/Whitelist Round:
🟨Create an account on Magic Square and go through KYC
🟨Use wallet which completed the Zealy campaign
🟨Click "Join Whitelist"
Second part of the ProRata Round will begin on August 8th at 11:00 UTC.
📊 Allocation will depend on thr amount you contributed in relation to other participants. Trading with other users (until TGE) will appear on Magic Square OTC marketplace. More information in detailed guide - link here.
#fanton#magicsquare#fton
⚡️Storm Trade, a Top DeFi Product, Ready to Launch Its Token
The crypto market is currently going through a phase change: we see a shift in sentiment from memecoins to fundamental projects. Traders are less active in flying into no-name tokens that do not have strong products behind them.
The latest launches of the TON ecosystem are not encouraging, the release of $HMSTR showed how quickly the situation on the market can change, bringing the end of the tap2earn era closer.
And while clickers were taking money from the retail users, the development of DeFi projects continued. In the last 12 months, Perp DEXs have taken center stage in the web3 world. Derivatives trading volumes significantly exceed spot, by 2-10 times, and this figure continues to grow. New players are emerging.
⚡️ChainGPT IDO Starts October 14th
IDO is taking place on the #ChainGPT launchpad, and the premarket on the TON network and on #MagicSquare confidently shows x3 from the initial presale price, which hints at buy pressure and a positive community mood. Only about 4% of the token will be allocated for the IDO.
You already know that $STORM stakers will receive 30% of protocol fees, discounts on fees and additional goodies in the form of #DAO. And the token itself will participate in the liquidity buffer, participating in the constant buyback from the market.
The ChainGPT IDO starts on October 14th, which means the listing will happen very soon, usually within a few days.
In numbers:
⚡️Storm Trade generates from $5M to $40M per day
⚡️The platform rewards liquidity providers with most of the commissions
⚡️4M+ connected wallets
What potential profit awaits holders?
Let's look at an example: over the last 30 days, the platform has collected about $800k in fees (source: DefiLlama), which means that token stakers would have received ~$240k. According to tokenomics and unlocks, only about 20-30M tokens will be available for staking after the launch, and we get ~100% APR for the token price for the IDO. This is without taking into account the rate growth.
While we watch how tapalki are launched and fade away, #StormTrade makes a real product that is already in a popular market segment, and the share of perps continues to grow.
#DYOR and get ready to start:
https://storm.tg/token
#IDO#DEX#Perp#Web3#TON