Что делать если нужно поставить какую-то 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
6 de Septiembre
Día Mundial del Sexo Oral.
Se conmemora una fecha particular que ha generado tanto interés como controversia: el Día Mundial del Sexo Oral que, además de tener un origen curioso y simbólico, no fue elegido al azar. El día y el mes, 6 y 9, respectivamente, aluden a la famosa posición conocida como “69″ en el Kamasutra. Esta jornada se enmarca en el Mes de la Salud Sexual, lo que también resalta la importancia de tener prácticas seguras y consensuadas. Este día también sirve como una oportunidad para promover la educación sexual y la importancia de mantener relaciones de maneras seguras. En este sentido, la celebración no solo busca resaltar la práctica en sí, sino también generar conciencia sobre los riesgos asociados, como las infecciones de transmisión sexual (ITS), y la necesidad de tomar precauciones adecuadas.
#efemérides#salud
Síguenos para más curiosidades
👉@laneuronacuriosa👈
#Efemérides || 18 de septiembre
Warner Bros. Entertainment y DC Comics eligieron el tercer domingo de septiembre para celebrar el Día de Batman. Es un personaje creado por los estadounidenses Bob Kane y Bill Finger y propiedad de DC Comics. Apareció por primera vez en la historia titulada "El caso del sindicato químico" de la revista Detective Comics N.º 27, en marzo de 1939.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 6 de diciembre de 1791
Wolfgang Amadeus Mozart recibe sepultura en el cementerio de San Marx de Viena, en una tumba comunitaria simple.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 6 de diciembre de 2000
Fue inaugurado The Great Court (Gran Atrio, Patio o Salón) del Museo Británico por la reina Isabel II; se ha convertido en uno de los interiores de museos más reconocibles del mundo. Fue diseñado por la firma Foster & Partners. 113 millones de personas han caminado bajo el famoso techo de vidrio.
Imagen: Fachada del Museo Británico y el Gran Salón.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 5 de diciembre de 1931
La catedral de Cristo Salvador de Moscú fue destruida por un pedido de Joseph Stalin para levantar el monumento supremo del estado socialista: el Palacio de los Sóviets.
La iglesia fue reconstruida en la década de 1990 y volvió a ser consagrada en el año 2000.
Imagen: Fotografía de la destrucción de la catedra, y la nueva catedral.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 25 de noviembre de 1975
Se inaugura el Museo Universitario del Chopo. Es un museo ubicado en la Ciudad de México, punto de encuentro de las subculturas contemporáneas y las nuevas tendencias del arte.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 19 de noviembre de 1819
El Museo del Prado hoy celebra 202 años; localizado en Madrid, España, es uno de los más importantes del mundo y de los más visitados.
Su principal atractivo radica en la amplia presencia de Velázquez, el Greco, Goya, Tiziano, Rubens, el Bosco, Murillo, Ribera, Zurbarán, Fra Angélico, Rafael, Veronese, Tintoretto, Patinir, Antonio Moro, Van Dyck o Poussin.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 10 de noviembre de 1954
El presidente Dwight D. Eisenhower inaugura el Memorial de Guerra del Cuerpo de Marines de Estados Unidos, también llamado Iwo Jima Memorial.
La estatua está dedicada a todos los miembros del Cuerpo de Marines de los Estados Unidos que murieron por la defensa de su país desde 1775. El diseño de la escultura está basado en la icónica fotografía Alzando la bandera en Iwo Jima, tomada durante la Batalla de Iwo Jima por el fotógrafo de Associated Press Joe Rosenthal.
La estatua representa a los marines y al marinero que izaron la segunda bandera sobre el Monte Suribachi: el sargento Michael Strank, el cabo Harlon Block, los soldados de primera clase Franklin Sousley, Rene Gagnon e Ira Hayes y el enfermero John Bradley.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 9 de noviembre de 1989
Hace 32 años fue derribado el Muro de Berlín, que dividió la capital alemana durante casi tres décadas. Su caída no sólo dio paso a la reunificación de Alemania sino que simbolizó el final de la Guerra Fría.
Uno de los pioneros en pintar el Muro fue Bansky, un mito viviente del arte callejero.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 17 de octubre de 1984
En Toluca, Estado de México, se promueve la colocación de un obelisco en honor a los niños héroes de Chapultepec y Veracruz.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 23 de septiembre
Se celebra el Día Internacional de las Lenguas de Señas.
Te dejamos un video con el abecedario en Lengua de Señas Mexicana (LSM) realizado por la Biblioteca Vasconcelos y un curso básico de LSM realizado por el INJUVE del Estado de Nuevo León.
Puedes aprender más de la LSM aquí.
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 22 de agosto de 1873
Se crea el primer cuerpo de bomberos de México en el puerto de Veracruz. En la Ciudad de México fue Porfirio Díaz quien creó de manera provisional el primer Cuerpo de Bomberos de la Ciudad, en 1880. En 1922 se expidió el Reglamento del Cuerpo de Bomberos del Distrito Federal y en 1951 se le otorga el carácter de «Heroico Cuerpo de Bomberos» por decreto presidencial. Este día se celebra también a los bomberos de la industria petrolera (PEMEX) conocidos como "contraincendios".
#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx