Что делать если нужно поставить какую-то 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
#Fidel sobre Chávez
"Volviste gigante (...)como una personalidad internacional relevante, querida, admirada y respetada por muchos millones de personas en el mundo, y de modo especial por nuestro pueblo.”
https://www.facebook.com/share/p/1G42cuJg3o/
Roberto Morales Ojeda en Facebook
#Fidel nos enseñó que debemos pensar "en los niños de hoy, que son el pueblo de mañana". Y nos pidió también que "hay que cuidarlos y velar por ellos como los pilares con que se funda una obra verdaderamente hermosa y verdaderamente útil".
Celebremos su día abrazando un nuevo Código para ellos, que reafirma nuestra voluntad política de protegerlos hoy y siempre. Trabajaremos para que esta ley se conozca, se cumpla y garantice un futuro lleno de oportunidades, alegría y justicia para todos ustedes.
https://www.facebook.com/share/p/16Xqxd567H/
Miguel Díaz-Canel Bermúdez
(@DíazCanelB) en X
Emotiva jornada en la Isla de la Juventud. Junto al Comandante Ramiro Valdés recordamos los 70 años de la excarcelación de #Fidel y de los moncadistas, y nos reunimos con jóvenes en el Presidio Modelo, para rememorar aquellos días épicos. Impactante escuchar a héroes como Ramiro.
https://x.com/DiazCanelB/status/1923111705623646399
Miguel Díaz-Canel Bermúdez
(@DiazCanelB)
¿Qué profunda conexión llevó a #Fidel el 11 de abril de 1995, hasta "la playita, al pie de Cajobabo", por donde desembarcaron Martí y Gómez 100 años antes? Nuestra historia está llena de esos misteriosos enlaces que nos convocan otra vez a Playita de Cajobabo. Aquí estamos hoy.
https://x.com/DiazCanelB/status/1910669986932142504?t=P_XMUv5MCTQXRL_8Kdq8pw&s=19
Roberto Morales Ojeda en Facebook
En este 4 de Abril, día en que celebramos el aniversario de la Organización de Pioneros José Martí y la Unión de Jóvenes Comunistas, en nombre de nuestro Partido Comunista de Cuba enviamos a cada niño, adolescente y joven cubano, un mensaje de confianza y compromiso revolucionario.
Ustedes son la savia nueva que da continuidad a la obra de la Revolución, herederos legítimos del legado de quienes nos trajeron hasta aquí, muy especialmente de #Fidel. Desde su fundación ambas organizaciones han sido pilares en la formación de valores en las nuevas generaciones.
Los pioneros, con sus pañoletas azules y rojas, simbolizan la pureza y el futuro; los jóvenes comunistas, con su militancia, encarnan la vanguardia en la defensa de la Patria y el proyecto socialista .
https://www.facebook.com/share/p/1BY8ZWeMAq/
🗣️| Si yo estoy convencido de eso, salgo todos los días a pelear, salgo todos los días a batallar, salgo todos los días a enfrentar, salgo todos los días a dar la cara; y eso es lo que tenemos que lograr hacer entre todos, pero en cada lugar.
🗣️| Así vamos a vindicar a #Cuba todos los días; así vamos a traer a #Fidel a la hora actual; así vamos a articular las fuerzas revolucionarias; así vamos a entrar en una ofensiva para superar los problemas de este momento; así vamos a lograr una participación más consciente y más creativa.
🗣️| Y así vamos a articular el trabajo político-ideológico, orientado a la defensa de la construcción socialista en nuestra Revolución, para lograr la vida más plena de nuestra gente, que está en esa prosperidad que le debemos a nuestro pueblo, que tenemos que alcanzar. Y lo tenemos que lograr también con unidad.
✍️ Presidencia Cuba
Miguel Díaz-Canel Bermúdez
(@DiazCanelB) en X
Felicidades @CNIC_Cuba , primer centro científico creado por la Revolución y semilla fértil de uno de los mayores orgullos de #Cuba: el país de hombres y mujeres de ciencia proyectado por #Fidel que también celebra hoy 39 años del @CIGBCuba . Feliz aniversario, queridos colectivos.
https://x.com/DiazCanelB/status/1940085866912989229
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
Lo afirmó #Fidel y lo comprobamos en el intercambio permanente con el pueblo: la fuerza del @PartidoPCC radica en su vinculación estrecha con las masas. #UnidosXCuba
https://x.com/DrRobertoMOjeda/status/1891817926237257990?t=TiBSwKTf34VHh3ky8SMwpA&s=19
Dr. Roberto Morales Ojeda
(Dr.RobertoMOjeda) en X
Cuando se cumplió el centenario del glorioso desembarco de Martí y Gómez por Playitas, #Fidel fue al lugar y desde allí ondeó la bandera de la Patria. Ese gesto simbólico nos deja una lección y nos inspira. #CubaViveEnSuHistoria
https://x.com/DrRobertoMOjeda/status/1910649785050136869
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
#Fidel: "Cuantos más militantes revolucionarios y con alto nivel de educación política tengamos en el centro de trabajo, más fuerza tendrá la Revolución, más apoyo en las masas, más solidez". #100AñosConFidel
https://x.com/DrRobertoMOjeda/status/1961413990971556100
En Birán, bajo la sombra de los cedros y con la presencia del General de Ejército Raúl Castro Ruz y del Primer Secretario del Comité Central del Partido y Presidente de la República, Miguel Díaz-Canel Bermúdez, el miembro del Buró Político y Secretario de Organización Roberto Morales Ojeda expresó que el centenario de #Fidel, que se celebrará oficialmente el 13 de agosto de 2026, estará precedido por un vasto programa de actividades en las que participará todo el pueblo.
#100AñosConFidel
https://www.facebook.com/share/p/1C2Vsp3vWy/
Miguel Díaz-Canel Bermúdez
Este 13 de agosto, junto a nuestro querido Raúl, estuvimos en Birán en la celebración del cumpleaños 99 de #Fidel. La jornada fue el inicio del Programa Conmemorativo por el centenario de su natalicio.
A la sombra de los cedros y algarrobos de este sitio trascendental para la Patria, "La Colmenita" nos mostró, con su magia y pureza, que el Comandante en Jefe vivirá por siempre en el corazón de su pueblo y su juventud.
#100AñosConFidel
https://www.facebook.com/share/p/1GoxbgBLUJ/