Что делать если нужно поставить какую-то 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
#Loki✨
Sobre si volveremos a ver a la TVA en el MCU ya que persiguen a las variantes de Kang.
"Esa es una decisión que se toma por encima de mi nivel salarial. Ellos deciden quién terminará en qué cosas"
@MARVELNOTICIAS📮
#Loki✨
Sobre los problemas legales de Jonathan Majors.
"Ya sabes, esa es una conversación de estudio más amplia. Para nosotros, simplemente estábamos concentrados en lo que teníamos y en lograrlo"
@MARVELNOTICIAS📮
#Loki✨
Sobre Ravonna y su final.
"Dejaré que la gente reflexione sobre lo que eso puede significar. Ella está en el aire. Hay cosas que pueden pasar con ella. Si miras los cómics, hay algunas inferencias divertidas que se pueden sacar de la pirámide"
"Y sabes, ¿quién sabe? ¿Alioth la mata? ¿O entablaron una amistad? ¿Quizás Alioth la recuerda? No sé"
@MARVELNOTICIAS📮
#Loki✨
Sobre la Sylvie de Sophia DiMartino.
"Sylvie es interesante, por todo lo relacionado con McDonald's y su vida tranquila. Se siente como un año sabático. No estoy del todo preparado para crecer y hacer eso"
"Y ella fue sacada de eso. Ahora comienza el trabajo. No estoy seguro de adónde irá desde aquí. Pero no creo que vaya a vivir sólo una vida tranquila. Quizás lo haría. No sé. Pero ella tomará una decisión muy activa sobre lo que va a hacer, sea lo que sea"
"Ella está tomando esa decisión. No es simplemente como, Oh, voy a sentir las cosas. Ella va a ir en una dirección"
@MARVELNOTICIAS📮
#Loki✨
¿Cómo pasaste del Loki del libertinaje al Loki que tiene que ser un Dios?
"La gran idea era llevar a Loki de un dios con d minúscula a un Dios con D mayúscula, impulsándolo hasta ese lugar donde obtiene su trono, pero ya no es un trono lo que quiere. Este es un deber"
"Está haciendo esto para que todos los demás puedan tener sus vidas. Está renunciando a lo que más desea para que todos los demás puedan tener su libre albedrío... Queríamos potenciar sus habilidades, pero también su sabiduría y conocimiento"
¿Está Loki sufriendo?
"Eso lo dejo a la interpretación. Esa imagen final pretende ser ambigua. Así que dejaré que la gente tome sus propias decisiones. Si nos fijamos en la mitología, alguien como Atlas es una persona interesante a la que mirar con eso"
@MARVELNOTICIAS📮
#Loki✨
¡El guionista de 'LOKI' Eric Martin responde a todas las preguntas del final de la serie!
¿Cómo funciona la comida en la TVA?
"Esa es una pregunta interesante, porque el tiempo no pasa. Siempre lo abordé como si existiera un requerimiento nutritivo. La termodinámica todavía se aplica y necesitan crear energía para moverse. Pero no tienen mucho tiempo para ello"
"Todo avanza rápidamente en la TVA. Siempre estás trabajando y tienes tu descanso de nueve minutos para almorzar. Hubo un gran chiste que tuvimos en la primera temporada. Al final tuvimos que cortarlo, pero fue divertido"
"Vemos a un cazador en la cafetería: terminan su comida y luego simplemente podan la bandeja. En lugar de tirar nada"
@MARVELNOTICIAS📮
#go#cloudnative#grafana#hacktoberfest#logging#loki#prometheus
Loki is a log aggregation system inspired by Prometheus but designed specifically for logs instead of metrics. It is cost-effective and easy to operate because it only indexes metadata (labels) about logs, not the full log content, which reduces storage and complexity. Loki works well with Kubernetes by automatically indexing pod labels and integrates natively with Grafana for easy log visualization. Its stack includes an agent (Alloy) to collect logs, Loki to store and query them, and Grafana to display them. This setup helps you efficiently manage and analyze logs with less cost and simpler operation compared to traditional logging systems[2].
https://github.com/grafana/loki