Что делать если нужно поставить какую-то 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
🪂Newairdrop ~ Iron Titanium ✅️
💲 Reward: worth of 55,000 $TITAN + for each 10,000 #TITAN and top 300 refer and earn 600$usdt each more referrals
🌐WebsiteTiTan
💎 Presents Ratings: ⭐⭐⭐
👑Winners: 20,000 people valid participants will be randomly rewarded.
➡️Airdrop Bot For Iron Titanium
↪️ Join their Telegram group. and Telegram Channel. (Mandatory:)
↪️ Follow their Twitter, like and retweet the pinned post by tagging 3 of your friends. (Mandatory:)
↪️ Follow their Instagram
↪️ Submit your details to the Airdrop bot.
ℹ️Distribution date: announced by the project is the Immediately 55,000 Titan Withdraw .
🌎 Saturn’s moon Titan is the only place in the Solar System, other than Earth, with stable liquid lakes on its surface. These lakes are filled not with water, but with methane and ethane, and cover hundreds of square kilometers. ✨
#astronomy⚡#planets⚡#titan
👉subscribe Interesting Planet
👉more Channels
Голова для очень тяжёлых камер #titan ну так позиционируют Стоимость порядка 55 000 долларов, поставки будут в августе #bts#оборудование#newsfidllercom
🇬🇧Bloodborne_Free Comic Book Day #01
🇷🇺Передающийся через кровь_День Бесплатных Комиксов #01
Действие происходит в мире Bloodborne.
Город Ярнам, древний готический мегаполис в мире богов и монстров, пострадал от кошмарной чумы.
Церковь Исцеления, известная своими чудодейственными препаратами на основе крови, не знает, откуда взялась таинственная болезнь Пепельной Крови и как предотвратить её распространение среди жителей Ярнама.
По улицам в поисках зверей бродят Охотники - первая линия обороны от безумия. Но не всех монстров так легко распознать – в домах и сердцах людей страх и горе могут породить новый тип мучений…
#комикс#comics#bloodborne
#titan
🪐 Beneath the thick ice of Saturn’s moon Titan, scientists suspect there is a hidden ocean of liquid water mixed with ammonia, possibly deeper than 50 kilometers below the surface. Titan’s dense atmosphere, rich in methane, and its secret subsurface sea make it one of the most fascinating candidates for harboring life far from Earth. ✨
#moons⚡#oceans⚡#titan⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 NASA's upcoming Dragonfly mission will send a robotic drone to Saturn’s moon Titan, using a nuclear-powered rotorcraft to explore its thick atmosphere and icy surface. This spacecraft will hop from site to site in search of complex organic molecules, pushing the boundaries of interplanetary exploration beyond anything ever attempted in the outer solar system. ✨
#spaceships⚡#exploration⚡#Titan⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🪐 Saturn’s moon Titan is surrounded by a thick atmosphere richer in nitrogen than Earth’s, and it’s the only moon in our solar system with dense clouds and surface lakes made of liquid methane and ethane. This unique chemistry, combined with Titan's size—larger than the planet Mercury—makes it a standout among the many moons of the giant planets, offering a world where clouds, rain, and rivers exist far from the Sun. ✨
#giantplanets⚡#titan⚡#atmosphere⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🇬🇧Dark Souls_The Willow King #1-4
🇷🇺Темные Души_Ивовый Король #1-4
Могучий король Утрель однажды возжёг пламя, но прежде его слуга рыцарь Герад не смог этого сделать, был поглощён пламенем и обратился в прах. Теперь пришла пора снова возжечь пламя, но Утрель воспротивился этому, став Ивовым Королём. Герад же возродился Негорящим и теперь должен объединить под своим командованием трёх могучих воинов. Они отправятся в логово Ивового Короля, чтобы заставить того исполнить долг перед королевством и человечеством.
#комикс#comics#темныедуши#darksouls
#titan