Что делать если нужно поставить какую-то 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
Nina Cereteu: La Drochia am demonstrat că se poate. E timpul ca această experiență să fie pusă în slujba întregii țări!
La Drochia am reușit să asfaltăm străzi și să reparăm drumuri, am modernizat iluminatul public, am investit în grădinițe, am creat parcuri și spații publice, am atras proiecte europene și am reușit să dezvoltăm infrastructura de apă și canalizare, să renovăm instituții publice. Am sprijinit tinerii și sportul - fiecare proiect a fost o investiție în viitor. Am demonstrat că administrația publică poate fi transparentă și responsabilă, că se poate face politică fără corupție și fără promisiuni deșarte. Este timpul ca această experiență să fie pusă în slujba întregii țări! Nu abandonez Drochia mea dragă, o duc mai sus. Acolo unde se iau decizii strategice. Acolo unde se decide viitorul!
Alegând Partidul Nostru, alegem o echipă de oameni care au demonstrat că pot. O echipă care muncește doar pentru Moldova și doar pentru oameni!
---
В Дрокии мы смогли заасфальтировать улицы и отремонтировать дороги, модернизировать уличное освещение, инвестировать в детские сады, создать парки и общественные пространства, привлечь европейские проекты, развить водопроводную и канализационную инфраструктуру, обновить госучреждения. Мы поддерживали молодёжь и спорт – каждый проект был инвестицией в будущее. Мы доказали, что общественное управление может быть прозрачным и ответственным, что политика может быть без коррупции и пустых обещаний. Пришло время использовать этот опыт на благо всей страны! Я не оставляю родную Дрокию, я поднимаю её выше. Туда, где принимаются стратегические решения. Туда, где решается будущее! Только за Молдову и только для людей!
#PartidulNostru#НашаПартия#NinaCereteu#Drochia#DoarPentruMoldova
Primarul orașului Drochia, Nina Cereteu, Partidul Nostru: Sunt mândră să fac parte dintr-o echipă care muncește pentru binele țării. Oamenii reprezintă cea mai mare valoare a Moldovei!
În ajunul Zilei Independenței, primarul Nina Cereteu a transmis locuitorilor orașului Drochia cele mai calde urări și le-a mulțumit tuturor celor care contribuie la dezvoltarea comunității:
În ciuda resurselor limitate, prin eforturi comune au fost realizate proiecte esențiale: îmbunătățirea aprovizionării cu apă, modernizarea drumurilor, amenajarea spațiilor publice, sprijinirea copiilor și susținerea grupurilor inițiative.
Sunt mândră să fac parte din această echipă dedicată, alături de colegi din întreaga țară, care muncesc cu pasiune și dăruire – pentru oameni, nu pentru interese. Cu ocazia Zilei Independenței Republicii Moldova, vă doresc sănătate, pace și curaj pentru a merge înainte, cu încredere în puterea comunității noastre. La mulți ani, dragi locuitori ai Drochiei! La mulți ani, dragi conaționali, oriunde v-ați afla!
🇲🇩La mulți ani, Republica Moldova!
💙 La mulți ani, Drochia!
---
Примар Дрокии Нина Черетеу, Наша Партия: Горжусь тем, что я - часть команды, которая работает во имя блага страны! Люди – главная ценность Молдовы. С Днем Независимости!
В канун Дня независимости Нина Черетеу поздравила жителей и поблагодарила всех, кто вкладывает силы в развитие Дрокии:
Несмотря на ограниченные ресурсы, совместными усилиями удалось реализовать важные проекты: улучшение водоснабжения, ремонт дорог, благоустройство, поддержка детей и инициативных групп.
Я горжусь тем, что я часть этой команды, вместе с коллегами со всей страны, работающих с полной самоотдачей и преданностью - ради людей, не ради интересов. По случаю Дня Независимости Республики Молдова желаю вам здоровья, мира и мужества двигаться веред – с верой в силу нашего сообщества.
🇲🇩С наступающим Днем независимости, Молдова!
💙С наступающим праздником, Дрокия!
#PartidulNostru#НашаПартия#DoarPentruMoldova#ТолькоЗаМолдову#Drochia#NinaCereteu
Nina Cereteu, în Washington: Sunt impresionată de interesul partenerilor din SUA pentru dezvoltarea orașelelor noastre și a Republicii Moldova în general
Primarul orașului Drochia, Nina Cereteu, participă, în perioada 6-17 august, la programul „Lumea Deschisă” („Open World”), organizat de Congresul SUA și Ambasada Statelor Unite în Republica Moldova. Acest program este un schimb profesional destinat liderilor locali din domeniul civic și politic. Detalii…
---
Нина Черетеу в Вашингтоне: Меня впечатлил интерес американских партнёров к развитию наших городов и к Республике Молдова в целом
Примар Дрокии Нина Черетеу с 6 по 17 августа участвует в программе „Open World” («Открытый мир»), организованной Конгрессом США и посольством США в Республике Молдова. Эта программа, направленная на местных лидеров в гражданской и политической сферах, предполагает профессиональный обмен опытом. Подробнее – по ссылке…
#Дрокия#Drochia#NinaCereteu#НинаЧеретеу
La Drochia vor fi realizate două proiecte mari, cu o valoare totală de aproape 50 de milioane de lei. Primarul Nina Cereteu, Partidul Nostru: Este un pas uriaș pentru oraș!
Primul proiect prevede extinderea rețelei de canalizare cu aproximativ 14,5 km în zona Policlinicii. Etapa a doua vizează dezvoltarea infrastructurii spațiilor publice în zona de revitalizare „Valea Curechiului”, unde vor fi reabilitați 1,5 km de drum pe strada Alexandru cel Bun, va fi amenajată curtea blocului de locuit de pe strada Alexandru cel Bun nr. 19 și vor fi instalate 10 stații moderne de transport public. Detalii...
---
В Дрокии будет реализовано два крупных проекта общей стоимостью почти в 50 миллионов леев. Примар от Нашей Партии Нина Черетеу: Это огромный шаг для города!
В рамках первого из них будет расширена примерно на 14,5 км канализационная сеть в районе Поликлиники. Второй этап предусматривает развитие инфраструктуры общественных пространств в зоне реновации Валя Курекюлуй. Там отремонтируют полтора километра улицы Александр Чел Бун, благоустроят жилой двор в доме 19 на той же улице и установят 10 современных остановок общественного транспорта в этом районе. Подробности по ссылке...
#Drochia#Дрокия#НинаЧеретеу#NinaCereteu#НашаПартия#PartidulNostru