Что делать если нужно поставить какую-то 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
#Obras sobre el incendio de Roma el 18 de julio del 64:
— Nerón contempla el incendio de Roma de Carl Theodor von Piloty, ca. 1861.
— Antorchas de Nerón de Henryk Siemiradzki, 1876.
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras relacionadas con la Batalla de Puebla:
— El General Bazaine ataca el fuerte de San Javier durante el sitio de Puebla, 29 de Marzo de 1863 de Jean-Adolphe Beauce
— Marcha para Puebla: el general Forey en campamento de San Agustín del Palmar tomado de Le Monde Illustré: journal hebdomadaire, nº 316, 02/05/1863.
— Lancero derriba a un oficial francés de Manuel Serrano (1875)
— Carga de la caballería mexicana en la Batalla de Puebla
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras de Leonardo da Vinci (puedes ver más aquí):
— La Virgen, el niño Jesús, y santa Ana (ca. 1503)
— San Juan Bautista (1513-16)
— La belle ferronnière (ca. 1490-95)
— La adoración de los magos (1480-82)
— Ginevra de' Benci (ca. 1474-78)
— Virgen de las rocas (1483-86)
— The Burlington House Cartoon (ca. 1499-1500)
— Virgen con el niño y rosas (conocida también como Madonna Benois, 1478-80)
#Obras relacionadas con Leonardo da Vinci:
— La batalla de Anghiari, copia de Peter Paul Rubens a partir de La lucha por el estandarte de Da Vinci (1603)
— Francisco I recibiendo los últimos suspiros de Leonardo da Vinci de Jean-Auguste-Dominique Ingres (1818)
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras que representan la Gran Exhibición de 1851 en el Crystal Palace:
— View from the Knightsbridge Road of The Crystal Palace in Hyde Park for Grand International Exhibition of 1851 por Read & Co. Engravers & Printers (1851)
— The Foreign Department, viewed towards the transept de J. McNeven (1851)
— La reina Victoria inaugura la Gran Exposición en el Crystal Palace de Hyde Park, Londres; representación de Louis Haghe (1851)
— The transept from the Grand Entrance, Souvenir of the Great Exhibition de J. McNeven (1851)
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras sobre Maximiliano de Habsurgo:
— Monedas de 20 pesos que muestran a Maximiliano I de México (1866)
— Busto en yeso de Maximiliano y Carlota de Habsburgo
— The Mexican Deligation appoints Ferdinand Maximilian of Austria as Emperor of Mexico (1864) de Cesare-Dell'Acqua (1867)
— Emperor Don Maximiliano I of Mexico de Franz Xaver Winterhalter (ca. 1865)
— Emperor Maximilian of Mexico before the Execution de Jean-Paul Laurens (1882)
— Exécution de l'Empereur Maximilien du Mexique de Édouard Manet (1868)
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras sobre los cuentos de Hans Christian Andersen:
— El soldadito de plomo, representación de Bertall
— Pulgarcita
— Dibujo del libro Fairy tales and stories de Hans Tegner (1900)
— La reina de las nieves, Lumikuningatar de Rudolf Koivu (1946)
— La sirenita, The Little Mermaid de Elena Ringo (2021)
— El patito feo, representación de Milo Winter (1916)
#literatura#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 27 de agosto de 1847
El general Antonio López de Santa Anna confiere al general Nicolás Bravo el mando de Chapultepec para que organice la defensa del castillo ante los invasores estadounidenses.
#Obras:
— Antonio Lopez de Santa Anna pintado por Carlos Paris.
— Retrato póstumo de Nicolás Bravo pintado por José Inés Tovilla.
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 18 de agosto de 293 a. C.
Comienza la institución de los festivales Vinalia Rustica. Éstas son unas festividades entorno al vino y en honor a Venus, diosa del amor, la belleza y la fertilidad de la mitología romana a quien se adoraba y festejaba en muchas fiestas y mitos religiosos romanos.
Su culto empezó en Ardea y Lavinio (Lacio). El 15 de agosto de 293 a. C. le fue dedicado su templo más antiguo del que se tiene constancia, y el 18 de agosto se instituyó la fiesta llamada Vinalia Rustica. El 25 de abril de 215 a. C. le fue dedicado un templo fuera de la Porta Colina en la colina Capitolina para conmemorar la derrota romana en la batalla del Lago Trasimeno.
#Obras:
— Tannhäuser en el Venusberg (poeta del s. XIII en un lugar mitológico del folklor europeo) de John Collier, 1901.
— Venus de Milo, datada entre el 150 y el 125 a. C.
— Venus Anadiómena de Titian, ca. 1520.
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 17 de julio de 1429
Carlos VII de Francia es coronado como rey de Francia en la catedral de Reims después de la exitosa campaña de Juana de Arco en la Guerra de los Cien Años.
#Obras:
— Juana de Arco en la Coronación de Carlos VII en la catedral de Reims de Jean Auguste Dominique Ingres, 1854.
— Juana de Arco de Jules Eugène Lenepveu, 1890.
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Efemérides || 3 de mayo de 326
En Bizancio, Helena de Constantinopla (madre del emperador Constantino) dice haber encontrado la cruz de madera en la que murió Jesucristo.
#Obras:
— Santa Helena con la Vera Cruz de Francesco Morandini (ca. 1575)
— Hallazgo de la Vera Cruz, en el libro Las muy bellas horas de Nuestra Señora o Libro de Horas de Turín, de Jan van Eyck (1422)
— Santa Helena y la Cruz de Giovanni Battista Cima da Conegliano (1495)
#historia#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras de Jacques-Louis David:
— La muerte de Marat (1793)
— El juramento de los Horacios (1784)
— La muerte de Sócrates (1787)
— El juramento del juego de pelota (esbozo de 1791)
— La rapto de las Sabinas (1798)
#pintura#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx
#Obras de William Harnett:
— La fiel Colt (1890)
— Still Life Violin and Music (1888)
— After the Hunt (1885)
— Attention, Company! (1878)
— The Old Violin (1886)
#pintura#ArteFuturaMX
https://artefutura.com.mx
@artefuturamx