Что делать если нужно поставить какую-то 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
🚀Mozo hits 450K followers! 🎉
A massive thank you to our amazing community for your support! We’re just getting started—stay tuned for more exciting updates, events, and rewards.
Let’s keep growing together! #Mozo
Website|Twitter|Community|Telegram Mini App|News Channel
Have you noticed that #Mozo is trending? 😜
We’re thrilled to see our community growing and embracing the future of decentralized AI!
Website|Twitter|Community|Telegram Mini App|News Channel
Data is more than just numbers—it's a reflection of who we are. The idea that corporations and governments can own or control our data threatens our personal freedom.
It’s time to reclaim your data and take back control. #Mozo
Website|Twitter|Community|Telegram Mini App|News Channel
GM #Mozo Builders🌞
Something exciting is just around the corner. Stay tuned for what’s coming next! 👀
Website|Twitter|Community|Telegram Mini App|News Channel
🚀 Exciting news!
#Mozo is partnering with CocosStudio, the premier platform powered by the world’s No.1 mini-game engine, Cocos Engine!
With a global community of over 1.6 million developers across 203 regions, Cocos Studio leads in mini-game development, incubation, and acceleration.
Together, we’re bridging the gap between Web2 and Web3, empowering developers to seamlessly transition to the decentralized world.
Website|Twitter|Community|Telegram Mini App|News Channel
We’re excited to announce our partnership with koi_protocol, a groundbreaking platform backed by Binance Labs
K.O.I combines the joy of virtual pet care with sophisticated AI competitive elements, all anchored on the Ethereum blockchain. This immersive environment caters to both casual and competitive gamers, enabling them to nurture, train, and trade their virtual companions.
Together, #Mozo and K.O.I will leverage advanced AI to enhance user experiences and drive innovation in the virtual pet gaming space.
Website|Twitter|Community|Telegram Mini App|News Channel
How to drive mass adoption of Web3? Lower the entry barriers for users! It's that simple.
👑 Pepe King is coming! Join #Mozo now and use your Telegram to earn free points. Don’t miss out!
🎮Play Now: https://t.me/mozoai_bot/hub
Website|Twitter|Community|Telegram Mini App|News Channel
1/6 The limitations of centralized control highlight the critical need for decentralized data in LLM development and RAG services. Let's explore why decentralized data is the future.
2/6 Enhanced Data Quality: Decentralization fosters a more inclusive environment where diverse user communities contribute data and perspectives. This enriches the knowledge base for LLMs, improving their performance and accuracy.
3/6 Reduced Biases: By removing centralized control of data sources, we significantly reduce potential biases. This promotes the development of fairer and more ethical AI models that benefit all users.
4/6 Increased Innovation: Decentralization fosters an environment where new ideas and contributions from the broader community can flourish, accelerating innovation in AI and leading to more advanced and powerful LLM models.
5/6 By harnessing the power of decentralized data, #Mozo proposes a novel solution that empowers regular users to actively contribute to the future of AI. This not only unlocks the full potential of LLMs but also fosters a more inclusive and ethically responsible AI development landscape.
6/6 Join us in revolutionizing AI development. Embrace decentralization and help create a more accurate, fair, and innovative future.
Website|Twitter|Community|Telegram Mini App|News Channel
🔥 Exciting news! #Mozo
🌟 New features are now live on the Mozo platform! 🌟
✅Our team is committed to continuous innovation to bring you a better experience.
❤️Explore these new features today and enjoy more efficient and smarter services!
Why #Mozo Matters:
✅Decentralized intelligence, empowering everyone.
✅Collaboration that enhances collective strength.
✅Innovation that revolutionizes industries and lives.
Be a part of Mozo’s journey!
Website|Twitter|Community|Telegram Mini App|News Channel