Что делать если нужно поставить какую-то 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
🎙Whitelisting announcement of SILKS.IO💥💥💥
The First P2E metaverse powered by the real world of thoroughbred horse racing. 🐎🐎🐎
*Silks* is the first derivative gaming platform that leverages a blockchain-enabled metaverse to parallel the real world of thoroughbred horse racing. The Silks metaverse is powered by a play-to-earn (P2E) gaming economy where anyone can experience the thrill of owning racehorses and horse farms, while earning valuable tokens through skilled gameplay and contributions to the ecosystem.
⭐️ WHITELISTING - GET EARLY ACCESS⭐️
➖➖➖
⚙️ About project NFT ⚙️
• Racing skills
• Land
• Stables
• Horses
📌 Members of the Silks ecosystem can participate by:
• Speculating on land
• Developing land into horse farms
• Purchasing and trading horses
• Syndicating horses
Entering horse ownership pools
📌 Members can earn rewards in the Silks ecosystem by:
• Staking horses
• Racing horses
• Breeding horses
Mining (verifying and publishing data to the ecosystem)
- Contributing to the Silks ecosystem in various ways
➖➖➖
🧊 Follow up SILKS.IOmedia🧊
- Website
- Twitter
- Discord
#NFT#NFTCommunity#P2E
🎉UXLINK Korea & Japan Club Card Mint Ends Early! 3,000 ETH SOLD OUT! 🎉
🔥Big news for our Korea & Japan community! The Social Club Card NFT mint has CLOSED EARLY due to overwhelming demand (3,000 ETH reached!). THANK YOU for your support! 💥
⚠️Some updates:
❌Oops! 34.3 ETH oversold due to tech glitch
💵Full refunds of oversold users coming in 2 working days + 100 UXLINK for each elite card & 10 UXLINK for each gold card as apology
⏰TWAP calculation adjusted to Mar 11 - Apr 7 (CMC closing prices)
🚨All other terms remain the same!
🎁Stay tuned for more rewards and community events! Let's keep building this global web3 family together! 🌏💙
Refund list: https://docs.google.com/spreadsheets/d/1A-5Cp--N7_lypHZcMdO6VWCPnPuyOdV7YEuAwGAvRkg/edit?gid=0#gid=0
🎉UXLINK 코리아 & 재팬 클럽 카드 민팅 조기 마감! 3,000 ETH 완판! 🎉
🔥한국과 일본 커뮤니티에 큰 소식을 전해드립니다! Social Club Card NFT 민팅이 엄청난 수요로 인해 조기 마감되었습니다 (3,000 ETH 달성)! 여러분의 뜨거운 성원에 감사드립니다! 💥
⚠️ 업데이트 안내:
❌ 기술 오류로 인해 34.3 ETH 초과 판매 발생
💵 2영업일 이내 전액 환불 예정 + 사과의 의미로 환불 유저에게 엘리트 카드당 100 UXLINK, 골드 카드당 10 UXLINK 지급
⏰ TWAP 계산 기간을 3월 11일 ~ 4월 7일(CMC 종가 기준)으로 조정
🚨기타 조건은 모두 동일하게 유지됩니다!
🎁 앞으로 더 많은 보상과 커뮤니티 이벤트가 이어질 예정이니 기대해주세요! 함께 글로벌 Web3 패밀리를 만들어가요! 🌏💙
환불 리스트 : https://docs.google.com/spreadsheets/d/1A-5Cp--N7_lypHZcMdO6VWCPnPuyOdV7YEuAwGAvRkg/edit?gid=0#gid=0
UXLINK Korea & Japan Club Cardのミントが予定より早く終了しました🎉 3,000 ETH分が完売!
Korea & Japanコミュニティの皆さま、多くのご参加ありがとうございました!
いくつかのご案内です:
・技術的な不具合により、34.3 ETH分がオーバーセールとなりました⚠️
・対象の方には2営業日以内に全額返金を行います。加えて、お詫びとしてElite Cardごとに100 UXLINK、Gold Cardごとに10 UXLINKを配布いたします🙏
・TWAP(加重平均価格)の算出期間は、3月11日〜4月7日(CMCの終値ベース)に変更となりました📅
・その他の条件に変更はありません
今後もさまざまな報酬やコミュニティイベントを予定しています。これからも一緒にグローバルなWeb3コミュニティを盛り上げていきましょう🌐
#UXLINK#NFTCommunity#Web3Journey
📢 Exciting news!
The NFT Points System is now officially in action 🎉 Starting today, you can earn points with your NFTs!
Curious about how it all adds up? Dive into the full calculation details here 👉https://t.me/singsingchannel/911
#NFTPoints#SingSing#NFTCommunity#Web3
🎤Announcement | Chat | X (Twitter) | Website | Game
🌟 We're thrilled to announce our partnership with Pirate Frenzy!
🏴☠️ Pirate Frenzy, a Play-To-Airdrop Mini App on Telegram by @PirateClashChannel, complements their main game, Pirate Clash Extension, powered by @Ancient8_gg and playable on Twitter.
🦈 With Pirate Frenzy, simply merge fishes and level up $PEARL earnings for $gPBT and $iPBT conversion in preparation for the Pirate Clash airdrop.
🎮 Play Pirate Frenzy for Airdrop Now💫💫
🤝 Together, we're embarking on a new journey. Stay tuned for exciting collaborations and innovative projects! 🚀✨
Read more and open Treasure at: X Post
#SingSing#PirateFrenzy#NFTCommunity#Web3
🚨 Attention!
The Additional Whitelist Pool for Treasure NFT Session 6 is NOW OPEN! 🚀
Don’t miss your chance to secure a spot and dive into the treasures.
Whitelist File
Read more and open Treasure at: X Post
#TreasureNFT#Whitelist#Web3#NFTCommunity
🆕Ordinals NFT is available on TokenPocket_TP!
👉https://www.tokenpocket.pro/
🚀From now on, you can easily discover your cute #Bitcoin#OrdinalsNFT on the TokenPocket_TP NFT section, including Recursive Inscriptions!
❓What's your favorite #Ordinals NFT? BitcoinFrogs BitcoinDogeClub fomojis
#NFA#TokenPocket#NFTCommunity
【Details】https://twitter.com/TokenPocket_TP/status/1734063966945751497
【Powered By】Crypto Box
🔥 The NFT trading competition is hotter than ever! 🔥
Reminder: Only transactions made through OpenSea will be counted. 🛳️
Tips: You should use OKX wallet mobile app to make it easy🚀
Follow the guideline and join the excitement! 📈✨
#NFT#TradingCompetition#OpenSea#NFTCommunity
Treasure NFT Session 6 is officially SOLD OUT! 🎉
Thank you for your amazing support. We're thrilled to announce that the whitelist for Session 7 is now OPEN!
To be eligible:
1️⃣Comment on this Post, tag 3 friends.
2️⃣Fill out the form with your wallet address and the comment link👉form (this form will be closed at 14:00 UTC - July 22)
Don’t miss your chance to be part of the next adventure. 🚀
Note: The additional Whitelist Pool will be opened in next few hours!
#TreasureNFT#SoldOut#Session6#Whitelist#NFTCommunity
Treasure NFT Session 5 is officially SOLD OUT! 🎉
Thank you for your amazing support. We're thrilled to announce that the whitelist for Session 6 is now OPEN!
To be eligible:
1️⃣Comment on this Post, tag 3 friends.
2️⃣Fill out the form with your wallet address and the comment link👉https://forms.gle/qutLw7av9qbzCNVm8 (this form will be closed at 14:00 UTC - July 15)
Don’t miss your chance to be part of the next adventure. 🚀
#TreasureNFT#SoldOut#Session5#Whitelist#NFTCommunity