Что делать если нужно поставить какую-то 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
Каждое планировочное решение дома – это баланс эргономичности и комфорта. Мы проработали всё до деталей в нашем новом проекте, в результате чего даже небольшая студия является продуманной гармонией личного пространства. Этот проект – вызов для тех, кто готов жить по новым правилам и идти в ногу со временем, для людей с новым мышлением и отношением к жизни, дому, своему времени, потребностям и ощущениям. Проект призван изменить представление о границах дома – команда успешно объединила понятия личного и общественного пространства, сохранив за резидентами возможность выбирать между этими функциональными модусами. Дом создан для тех, кто хочет добиться сочетания эффективности, комфорта и эстетизации жизненного пространства во всех сферах, как в производительной и творческой, так и в коммуникативной и рекреационной.
Официальная страница проекта:
https://logos.moscow/
⠀
#Sense#SenseDeveloper
Мы - единомышленники, увлеченные профессионалы своего дела, эстеты, ценящие качество и создающие особую энергетику для каждого проекта компании.
⠀
«Наш опыт помогает нам создавать сложный и красивый продукт, делать особенными даже незаметные детали. Мы верим в то, что уникальность – это навсегда, поэтому создаем проекты такими, чтобы они нравились нашим покупателям и нам самим. Мы меняемся вместе с миром и учимся каждый день. Это позволяет нам достигать целей максимально современными и надёжными способами, а удовольствие от результата объединяет нас с теми, для кого мы работаем», - комментирует исполнительный директор Александр Мамаев.
⠀
#Sense#SenseDeveloper
«Наша команда - это увлечённые профессионалы с многолетним опытом работы на премиальном рынке недвижимости как в России, так и за рубежом. Мы хотим показать покупателям, каким может быть современный жилой дом высокого класса, в котором эмоциональный контекст находится в неотъемлемой связи с физическим восприятием. Уже сейчас мы разрабатываем три проекта в центре г. Москвы, которые представим в ближайшее время», - подчеркнул генеральный директор Юрий Матвеев.
#Sense#SenseDeveloper
Мы начали строительство дома Logos.
В настоящий момент в плановом режиме ведутся работы нулевого цикла. Застройщиком была заблаговременно осуществлена закупка и поставка на строительную площадку материалов, необходимых для выполнения данных работ.
В феврале 2022 года начаты работы по устройству шпунтового ограждения котлована. Также активно ведутся работы по устройству временных инженерных сетей, необходимых для бесперебойного осуществления строительно-монтажных работ на объекте.
Выполнение работ на конец марта составляет более 70%. Завершение работ по устройству шпунтового ограждения запланировано на первую половину апреля 2022 года.
#Logos#SenseDeveloper#Sense#ДомСоСмыслом
Мы получили проектную декларацию проекта Logos - ещё один этап на пути к воплощению наших идей пройден.
И пока наша команда активно организует ресурсы для строительства нового дома, вы можете одним из первых узнать детали проекта.
#Logos#SenseDeveloper#Sense#ДомСоСмыслом
Logos (от древнегреческого λόγος) — это целостность представлений, которой свойственно равновесие ума и сердца, баланс анализа и интуиции.
Наше видение Logos подразумевает объединение рационального и эмоционального аспектов. Во-первых, концепция дома Logos объединяет насыщенный спектр функциональных общественных пространств с личными, представляя миссию команды Sense объединять смысл и чувство в стильной и современной концептуальной архитектуре. Во-вторых, Logos расширяет коммуникативное пространство. Дом взаимодействует с окружающим миром через фасады, которые отражают окружающее пространство, а со своими жителями через своё внутреннее пространство для отдыха, работы, общения, медитации, занятий спортом, развлечения, уединения и встреч.
#Logos#SenseDeveloper#Sense#ДомСоСмыслом
Мы получили разрешение на строительство нашего нового проекта Logos.
Logos - это проект дома со смыслом, который является абсолютно самодостаточным пространством, окружающим своих обитателей рационально и функционально организованным наполнением. Выбирая между различными видами активности и отдыха, жители Logos смогут использовать места для отдыха, работы, общения, медитации, занятий спортом, развлечения, уединения и встреч.
Logos также учитывает потребность своих жителей быть в эпицентре социально-экономической жизни мегаполиса, предлагая им локацию, которая позволит пользоваться всеми возможностями жизни в центре города.
Дом Logos будет расположен в Даниловском районе, в 5 минутах пешком от метро Тульская.
Дом Logos
#Sense#SenseDeveloper#Logos#ДомСосмысломLogos#ДомЛогос