Что делать если нужно поставить какую-то 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://t.me/El_Reference - сам канал
Бот это такая универсальная автоматизированная система, позволяет скачивать с любых платформ, анализировать контент, создавать теги, грузить автоматически в Eagle с тегами и это все добро выкладывать в канал
Цель сформировать публичную базу референсов для разных специалистов
Для удобства поиска в каждом посте прописаны теги. Теги формируются на основе нейро-анализа.
Алгоритм взаимодействия таков
Тебе нужны референсы с тачками. Смотришь пинтерест, беханс, свои сохранные референсы. Либо находишь, либо не находишь. В том случае, если поиск того самого не удалась, то заходишь в мою базу. Пишешь хэштег #motion и тег "car" или "automobile". Дальше смотришь посты, в котором этот тег присутствует. То есть разница со всем остальным поиском в том, что есть теги, а не просто ссылка на видео или пустое видео без каких-либо зацепок для поиска, которая превращается в один большой хлам без возможности поиска внутри
Планы
Тестить, тестить и тестить. И разобраться самим ботом. Возможно ли это из локальной истории, которая работает только у меня, перенести в публичную. Чтоб, например, каждый через этого бота смог скачивать с любых платформ. Чтоб механизм метча Eagle + Бот работал тоже и у остальных людей. Ответов не знаю. Буду думать и пробовать.)
#Портфолио
⚖ В дополнение к предыдущему посту, делюсь образцами motion, которые используются в США:
1. Motion to dismiss - это ходатайство о прекращении судебного процесса. Такой motion может быть подан, если истец не имеет права на предъявление иска, если иск не соответствует требованиям формы или содержания, или если иск был предъявлен после истечения срока исковой давности.
2. Motion for summary judgment - это ходатайство о резолютивном решении, которое может быть подано любой из сторон в процессе. Суть такого motion заключается в том, чтобы убедить суд в том, что все необходимые факты и доказательства в данном деле уже известны, и что их интерпретация не допускает иного вывода, кроме того, который предлагает подавец motion. Если суд одобрит motion for summary judgment, то это может привести к прекращению судебного процесса без необходимости проведения полноценного судебного разбирательства.
3. Motion to compel discovery - это ходатайство о принуждении на предоставление доказательств. Если одна из сторон не предоставляет необходимых доказательств, то другая сторона может подать такой motion, чтобы вызвать ее к ответу.
4. Motion for continuance - это это ходатайство о переносе даты судебного заседания. Такой motion может быть подан, если одна из сторон не готова к разбирательству в заявленную дату.
5. Motion in limine - это ходатайство о предварительном исключении доказательств или установление определенных правил в отношении представления доказательств на судебном процессе. Например, такой motion может быть подан для того, чтобы запретить сторонам использовать определенные доказательства или для того, чтобы установить правила касательно способа представления доказательств.
6. Motion for reconsideration - это ходатайство о пересмотре судебного решения. Такой motion может быть подан, если сторона не согласна с решением суда и хочет, чтобы суд пересмотрел свое решение на основании новых доказательств или аргументов.
7. Motion to quash - это ходатайство об отмене судебного приказа. Такой motion может быть подан, если сторона не согласна с приказом суда и хочет, чтобы суд отменил его.
8. Motion for sanctions - это ходатайство о наложении санкций на сторону, которая нарушила правила судебного процесса. Например, такой motion может быть подан, если сторона не предоставляет необходимые доказательства или если она злоупотребляет правом на подачу многочисленных ходатайств.
Это только некоторые из наиболее распространенных типов motion в американском праве. Каждый конкретный судебный процесс может иметь свои особенности и требования в отношении подачи и рассмотрения motion.
#uslaw, #motion
✍ Тут вчера мне написали с просьбой объяснить, что такое motion. Motion - это американская правовая концепция нежели английская. Но в любом случае, я постараюсь объяснить вкратце что это.
🇺🇸 В американском праве термин "motion" обычно относится к формальному запросу, который предъявляется суду в ходе судебного процесса.
📝 Motion может быть подан любой стороной в процессе (например, истцом, ответчиком или третьей стороной) и может быть связан с различными вопросами, например, с требованием о разрешении какого-либо вопроса до начала судебного процесса, или с требованием о прекращении процесса, а также с запросом на изменение судебного решения.
🗂 Существует множество различных типов motion, которые могут быть поданы в судебном процессе, включая motion to dismiss (запрос на прекращение судебного процесса), motion for summary judgment (ходатайство о резолютивном решении), motion for continuance (запрос на перенос даты судебного заседания), motion to compel discovery (запрос на вынуждение предоставления доказательств) и многие другие.
#motion, #uslaw