Что делать если нужно поставить какую-то 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
🆕We've released a new version of TokenPocket on Android.
🔺2.7.0🔺
🔵Support EIP-7702-based Dust Cleaner function.
🔵Optimize the trading experience.
🔵Optimize users’ experience.
You can upgrade your #TokenPocket via Google Play or the official website. 🔗https://tp.xyz
🆕We've released a new version of TokenPocket on Android. 🔺2.6.0🔺
🔵Fully upgrade the trading experience.
🔵Add PnL analysis on the Asset page.
🔵Enhance the market page with more comprehensive data display.
🔵Optimize users’ experience.
You can upgrade your #TokenPocket via Google Play or the official website. 🔗https://tp.xyz
🆕We released TokenPocket's new version on Android. 🔺2.4.7🔺
🔵Upgrade the wallet security backup feature.
🔵Support EIP-4527 Protocol.
🔵Meme Mode supports TRON network.
🔵Add security reminders for custom nodes.
🔵Support the Notifications for Multi-Sig wallet transactions.
🔵Optimize token search functionality on the Asset page.
🔵Optimize the experience on the Solana network.
🔵Optimize users’ experience.
You can upgrade your #TokenPocket via Google Play or the official website.
🔗https://tp.xyz
🆕⛓svmBNB is now live on TokenPocket.
svmBNB is a high-performance SVM chain developed by the SOON team for BNB Chain, based on the SOON Stack.
💙How to create/import a svmBNB wallet on #TokenPocket?
Guide👉https://help.tokenpocket.pro/en/wallet-operation/how-to-create-a-wallet/svmbnb
🎈Discover the svmBNB Ecosystem with Your TokenPocket!
📱https://tp.xyz
💻https://extension.tokenpocket.pro
📣 Our New Official Website: https://www.tp.xyz/🌐
It will operate alongside http://tokenpocket.pro to provide users with a more stable and efficient access experience.
A smarter, easier way to explore Web3. #TokenPocket
👉https://www.tp.xyz/
👉https://www.tokenpocket.pro/
🆕We released TokenPocket's new version on Android and iOS.
🔺Android: 2.4.5
🔺iOS: 2.6.6
🔖Details 👇
🔵Support BEP-414, enabling users to pay $USDT or other tokens as gas costs.
@BNBCHAIN
🔵Support the PnL display on the Market page.
🔵Support MEV Node Detection service.
🔵Support deleting the wallet address on Recent Transfer.
🔵Support for Smart Address tagging.
🔵Update the default token icons.
🔵Optimize the Secret Recovery Phrase backup process.
🔵Optimize the wallet synchronization feature.
🔵Optimize Market data display.
🔵Optimize the wallet service on Solana and TON.
📱You can upgrade your #TokenPocket via Google Play, App Store, or the official website.
🔗https://tokenpocket.pro
🆕Eclipse is now live on TokenPocket.
Eclipse Mainnet is Ethereum's first Solana Virtual Machine (SVM) network. Eclipse Mainnet combines the best pieces of the modular stack.
💙How to create/import an Eclipse wallet on #TokenPocket?
Guide 👉https://help.tokenpocket.pro/en/wallet-operation/how-to-create-a-wallet/eclipse
🎈Discover the Eclipse Ecosystem with Your TokenPocket!
👉https://tokenpocket.pro
🆕We released TokenPocket's new version on Android and iOS.
🔺Android: 2.4.3
🔺iOS: 2.6.1
🔵Market and Trading Sections Upgraded.
🔵Meme Mode supports BNBCHAIN and Base.
You can upgrade your #TokenPocket via Google Play, App Store, or the official website.
🔗https://tokenpocket.pro
🆕 SOON is now live on TokenPocket.
SOON is a high-performance SVM Rollup designed to realize the Super Adoption Stack.
💙How to create/import a SOON wallet on #TokenPocket?
Guide👉https://help.tokenpocket.pro/en/wallet-operation/how-to-create-a-wallet/soon
🎈Discover the SOON SVM Ecosystem with Your TokenPocket!
👉https://tokenpocket.pro
2024: Moving Forward with Our Users, In Tune with the Market! 🌊
Thank you for all the support in 2024! Let’s continue growing stronger together with TokenPocket!💙
Dive into the #TokenPocket 2024 Annual Report ⤵️
https://tokenpocket-gm.medium.com/f01689f88a91
🔵New Bridge Integration on the #TokenPocket Trade page: SwapKit
🎯 Redefining Cross-Chain Bridging with TokenPocket!
SwapKit delivers an innovative cross-chain bridging solution, fully integrated into TokenPocket, making it easier than ever to swap cross-chain between Native $BTC, $USDT, $USDC, $ETH, and other leading chains and trending tokens.
Make cross-chain bridging easier than ever.
📱https://tokenpocket.pro
💻https://swap.transit.finance/?locale=en&market=1&inputChain=BTC&inputSymbol=BTC&outputChain=ETH&outputSymbol=ETH#/
🆕We released TokenPocket's new version on Android. 🔺2.4.0🔺
🔵 Support Swap & Bridge on the SuiNetwork.
🔵 Support SuiNetwork cold wallet and watch-only wallet features.
🔵 Support custom network sorting functionality.
🔵 Optimize the Transfer page.
🔵 Optimize users’ experience.
You can upgrade your #TokenPocket via Google Play or the official website.
🔗https://tokenpocket.pro