Что делать если нужно поставить какую-то 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
#Influenza (flu) spreads easily, but prevention starts with you!
Practice these simple healthy habits to stay protected:
✔️Wash your hands regularly with soap under running water
✔️Cover your mouth and nose when coughing or sneezing
✔️Avoid close contact with sick individuals
✔️Clean and disinfect touched surfaces frequently
✔️Visit the nearest healthcare facility if you feel unwell
✔️Wear a face mask in crowded places
Protect your family. Protect your community.
#FluPrevention#HealthyLiving#NCDCNigeria
#Influenza is a highly contagious respiratory infection that can cause fever, cough, sore throat, body aches, and fatigue. It spreads easily through contact with coughs or sneezes of an infected persons.
Protect yourself and your loved ones by:
✔️ Getting the annual flu vaccine
✔️ Practicing good hand hygiene
✔️ Covering your mouth and nose when sneezing or coughing
✔️ Staying home if you’re unwell
Early prevention and care save lives!
#InfluenzaAwareness#StayHealthy#NCDCNigeria
Influenza spreads faster than you think, don’t let your guard down.
A simple cough, a handshake, or even touching a surface can expose you to the flu virus. Stay one step ahead by protecting yourself and those around you.
🛑 Practice good hygiene
😷Cough and sneeze into your elbow
🧼 Clean touched surfaces frequently
🏠 Visit the nearest healthcare facility if you feel unwell
Your actions can break the chain of transmission. Stay protected.
#FluAwareness#Influenza#StopTheSpread#NCDCNigeria
https://www.instagram.com/p/CAah59lJUpJt1SyIcjSI4F-KFIhgsSSFBw0d380/?igshid=1qvycu8wnl1ll
.
https://m.facebook.com/story.php?story_fbid=10224747250090873&id=1300855885
.
.
Assalamualaikum wr wb
.
.
Bapak/Ibu/teman2, jangan lupa besok siang, Kamis, 21 Mei 2020, pukul 13.00 - 14.00 WIB, saksikan siaran LIVE Saya dalam program SEIMAN yang ke-3 bersama dr. Ronny Hadyanto di akun @infokom.farmasi
Kami akan "Ngobrol Santai Soal ISPA", kupas tuntas masalah kesehatan tersering dan terbanyak di tengah masyarakat hingga saat ini, termasuk saat Pandemi Covid-19.
.
.
GRATIS dan BERHADIAH SOUVENIR MENARIK dari @inpharcom.bukukesehatan bagi peserta yang bertanya dan beruntung.
.
.
Syaratnya:
1. Follow 3 akun berikut: - @infokom.farmasi
- @inpharcom.bukukesehatan
- @nellysyukri
.
2. Repost flyer ini di akun medsos masing-masing.
.
3. Tag/mention minimal 3 akun temanmu.
.
.
Sebarkan yaaa..
.
.
IG @infokom.farmasi
Twitter @infokom.farmasi
FB 'Informasi Kefarmasian dan Kesehatan'
Email: [email protected] .
#infokefarmasian#infokesehatan
#inpharcom#bukukesehatan#bukufarmasi#gemacermat#cerdasgunakanobat#ispa#commoncold#batukpilek#influenza#flu#sinusitis#otitismedia#pneumonia#covid19#lawancovid19
Ngobrol Santai Soal ISPA
.
.
https://www.instagram.com/p/CAZMLb9JllK/?igshid=1hbv6y0kyd08y
.
.
https://m.facebook.com/story.php?story_fbid=130671945267435&substory_index=0&id=103148744686422
.
.
ISPA? Istri Setia Pendiam dan Amanah? Bukaaaannn...
Infeksi Saluran Pernapasan Atas?
Bukaaaan.....
Yang benar ISPA itu Infeksi Saluran Pernapasan Akut.
Trus ada apa dengan ISPA?
.
.
ISPA itu salah satu penyakit terbanyak dan tersering dijumpai di tengah masyarakat.
Masalahnya apa?
Masalahnya, ada banyak jenis ISPA. GAK SEMUANYA BUTUH DIOBATI. DAN GAK SEMUANYA BUTUH ANTIBIOTIK.
.
.
Salah satu gejala ISPA yang jadi momok belakangan ini yaitu Covid-19 yang disebabkan oleh virus SARS-COV2, yang sebenarnya gak ganas. Tapi penyebarannya yang cepat sekali meluas, hingga banyak korban yang tewas.
.
.
Mau tau lebih banyak tentang ISPA?
Yuk kita bahas tuntas dalam program SEIMAN yang ke-3 bersama dr. Ronny Hadyanto, dimoderatori langsung oleh Kak @nellysyukri
Live di IG @infokom.farmasi
Kamis, 21 Mei 2020
Pukul 13.00 - 14.00 WIB.
.
.
GRATIS dan BERHADIAH SOUVENIR MENARIK!!
Syaratnya:
1. Follow 3 akun berikut:
- @infokom.farmasi
- @inpharcom.bukukesehatan
- @nellysyukri
2. Repost flyer ini di akun medsos masing-masing.
3. Tag/mention minimal 3 akun temanmu.
.
.
Sebarkan yaaa..
.
.
IG @infokom.farmasi
Twitter @infokom.farmasi
FB 'Informasi Kefarmasian dan Kesehatan'
Email: [email protected]
.
#infokefarmasian#infokesehatan
#inpharcom#bukukesehatan#bukufarmasi#gemacermat#cerdasgunakanobat#ispa#commoncold#batukpilek#influenza#flu#sinusitis#otitismedia#pneumonia#covid19#lawancovid19