Что делать если нужно поставить какую-то 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
🇷🇺22 de agosto – Día de la Bandera Nacional de Rusia
Hoy Rusia celebra el Día de su bandera nacional, una de las principales fiestas estatales, establecida en 1994 en conmemoración de la restitución, en 1991, del histórico tricolor ruso: blanco, azul y rojo. Este estandarte simboliza la independencia, la fuerza y la continuidad de la historia del Estado ruso.
📜 Según una conocida leyenda, fue tras un encuentro con la emperatriz rusa Catalina II y al conocer el tricolor ruso que Francisco de Miranda, héroe venezolano y precursor de la independencia, concibió el diseño de la bandera que más tarde inspiraría a la de Venezuela. Así, los destinos de nuestros pueblos quedaron unidos también a través de sus símbolos.
🇷🇺🤝🇻🇪 El tricolor ruso y el tricolor venezolano no son solo banderas nacionales, sino también emblemas de dignidad, libertad y futuro para nuestros pueblos.
✨ Cada color de la bandera rusa tiene un profundo significado:
⚪️Blanco — la pureza y la paz.
🔵Azul — la fe, la fidelidad y la espiritualidad.
🔴Rojo — la valentía, la fuerza y la entrega por la Patria.
En este día festivo, recordamos con orgullo que la historia de Rusia y Venezuela está entrelazada no solo por la diplomacia y la amistad, sino también por símbolos que siguen inspirando a generaciones.
#DíaDeLaBanderaRusa#RusiaVenezuela80#Amistad
🇷🇺Día de la Bandera Estatal: el símbolo que une a todos los rusos
Cada 22 de agosto, Rusia se viste de blanco, azul y rojo para celebrar el Día de la Bandera Estatal, una fecha que va más allá de lo ceremonial. Es un día para recordar que es un símbolo vivo que acompaña a cada ciudadano en su historia personal y colectiva.
La bandera actual fue restaurada oficialmente en 1991, tras la caída de la Unión Soviética, y establecida como símbolo nacional por decreto presidencial en 1994. Pero su origen se remonta al siglo XVII, cuando el zar Alexéi Mijáilovich ordenó izar una bandera en el primer buque de guerra ruso, el “Águila”. Más tarde, Pedro el Grande adoptó el diseño tricolor inspirado en los colores paneslavos, y desde entonces ha sido emblema de soberanía, unidad y orgullo nacional.
Durante el período soviético, la bandera roja con la hoz y el martillo dominó el paisaje. Sin embargo, el regreso de la tricolor marcó un renacer simbólico para la Federación Rusa.
El significado de los colores también ha evolucionado. Hoy se interpreta que el blanco representa la paz y la pureza, el azul la fe y la lealtad, y el rojo la valentía y la sangre derramada por la patria.
En palabras de la Cancillería rusa, la bandera tricolor es “un vínculo vivo con la Patria” para los compatriotas en el extranjero. Y no es para menos: ondea en embajadas, escuelas, barcos, y hasta en las misiones espaciales. Es el hilo que cose la identidad rusa en cada rincón del planeta.
#DíaDeLaBanderaRusa#TricolorRuso#HistoriaDeRusia#OrgulloNacional#CulturaRusa
Apóyanos pulsando👉'BOOST'👈
🖥https://vamosarusia.com
💬@vamosarusia