Что делать если нужно поставить какую-то 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
🐶Lost Dogs:The Way👣
Today we need to choose the “average” card. Will Rex go on the expedition?
1. Expedition is On🧗♂️
2. Expedition is Off🚫
3. He Went Alone🌲
I think He Went Alone🌲 will be the average choice.
👉Let’s join the next battle!
Share your thoughts in the comments!
➖
📣Stay tuned! Subscribe!
➖
#lostdogs#crypto#cryptogame
🐶Lost Dogs: The Way 👣
Today we need to choose the “average” card. How will the dogs deal with the infected?
1. Quarantine 🧪
2. Do Nothing 🛑
3. Kill the Infected ⚔️
I think Quarantine 🧪will be the average choice.
👉Let’s join the next battle!
Share your thoughts in the comments!
➖
📣Stay tuned! Subscribe!
➖
#lostdogs#crypto#cryptogame
➖
🐶Lost Dogs:The Way -
🏆Last Round’s Winner: Survival Kit🧰
📝New Challenge: What will the Cat do next?
(Find the unpopular card)
1. To Wash 🧼
2. Track Down Gavkus 🐾
3. Summon Darkness 🌑
🔍 Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
🐶Lost Dogsis officially out!
This is not just another slipper. This is a community driven story where you can mine the new $WOOF token.
The season will last only 6 weeks!
🤪Join our clan, as usual we will try to rise to the top and earn more $NOT
The team has released a useful guide, thanks to which you can understand the game and its interesting plot, which you control yourself!
Play here @lost_dogs_bot
#Notcoin#GameFi#LostDogs#TON#NOT
🐶Lost Dogs:The Way -
🏆Last Round’s Winner: Fireworks🎆
📝New Challenge:
Which tactic to choose? (Find an average card)
1. Surround 🌀
2. Frontal Attack 🚀
3. Fake Retreat 🎭
🔍Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶Lost Dogs:The Way -
🏆 Last Round’s Winner: Decryption Machine
📜New Challenge:
How to handle the new information? (Find the average card)
1. Tell Everyone 📢
2. Hide the Truth 🔥
3. Defuse 🛡️
🔍Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶Lost Dogs:The Way -
🥇 Last Round’s Winner:
The winning card in the last game was Go Underground🌿
🚀New Challenge:
What truth will the Resistance reveal? (Find the average card)
1. Greed of the Cult 🪙
2. About Religious Lies 📖
3. How to Resist 🛠
🔍Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶Lost Dogs:The Way -
🥇 Last Round’s Winner:
The winning card in the last game was Kidnap🐾
🚀New Challenge:
How can Resistance continue the fight? (Find the unpopular card)
1. Invite Newcomers 👥
2. Go Underground 🌿
3. Pirate Radio 🎙
🔍Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶Lost Dogs:The Way -
🏆 Last Round’s Winner: The winning card in the last game was Fend Off in Battle! 🛡️
🚀New Challenge:
How should the Resistance Dogs handle the newly born mutant messiah? (Find the average card) 👣
1. Kidnap 🐾
2. Kill ⚔️
3. Unveil the Origin 🔍
Analyze carefully before making your choice!🧐
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶Lost Dogs:The Way -
🏆 Last Round’s Winner: The winning card in the last game was Wisdom! 👣
🚀New Challenge:
How will they rescue Genghis Gaf, and will they?
1. Fend Off in Battle🔥
2. Stay Low 🏠
3. Rescue Secretly 🤘
Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶🐶Lost Dogs: The Way - 🏆Last Round’s Winner: The winning card in the last game was Fight Back!👣
🚀New Challenge:
What are the dogs expecting from their beloved wizard's performance?
1. Underground Firework 🎆
2. New Day 🌅
3. Existence’s Purpose 🔮
Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming
🐶Lost Dogs: The Way -
🏆Last Round’s Winner: The winning card in the last game was Secret Comlink! 👣
🚀New Challenge:
What should the dogs do during the raid?
1. Fight Back🥊
2.Run Away🏃♂️
3.Negotiate🤝
Analyze carefully before making your choice!
🔔Subscribe👉Join Lost Dogs
—————————————————
#lostdogs#crypto#dogs
#cryptogame#nftgaming