Что делать если нужно поставить какую-то 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
⭕️LA EPOPEYA DE BEIT HANÚN
🔻En la medianoche del 7 de julio, combatientes de #Hamás llevaron a cabo una operación militar y de inteligencia altamente compleja, estructurada en cuatro fases, que provocó decenas de bajas entre las fuerzas sionistas.
🔻El portavoz del ejército israelí ha admitido hasta ahora la muerte de cinco soldados y catorce heridos...
🔗spanish.khamenei.ir
✅@khamenei_es
KHAMENEI.IR | 𝕏 | Facebook| TikTok
🟥El ayatolá Jameneí, reunido hoy sábado con el jefe y los miembros del Consejo de Liderazgo de #Hamás:
🔻«Hamás ha vencido al régimen sionista y a EEUU»
🔗👉LEER LA NOTICIA COMPLETA
Sigan el canal en Telegram del Ayatolá Jameneí 👉@khamenei_es
KHAMENEI.IR | 𝕏 | Facebook| TikTok
⭕️ «El jefe del régimen sionista, ese miserable deshonrado, dijo que querían aniquilar a #Hamás. Y ahora ese mismo régimen sionista se ha sentado a negociar con el mismo Hamás al que querían aniquilar y ha aceptado sus condiciones para que se lleve a la práctica el alto el fuego...» (22/01/2025).
🔗 LEER 👉spanish.khamenei.ir/news/6424
Sigan el canal en Telegram del Ayatolá Jameneí 👉@khamenei_es
KHAMENEI.IR | 𝕏 | Facebook| TikTok
🟥 HAMÁS HA VENCIDO AL RÉGIMEN SIONISTA
⭕️ «El régimen sionista ha causado el martirio de los dirigentes de #Hamás, pensando que con ello Hamás estaba acabado, y mientras tanto Hamás sigue luchando, sigue combatiendo. Lo que eso significa es la derrota del régimen sionista...» (07/11/2024).
🔗LEER👉spanish.khamenei.ir/news/6251
Sigan el canal en Telegram del Ayatolá Jameneí 👉@khamenei_es
KHAMENEI.IR | 𝕏 | Facebook | TikTok
⭕️ «La criminal banda sionista ha llegado a la conclusión de que jamás vencerá a #Hamás» (04/10/2024)
#Gaza#Palestina
Sigan el canal en Telegram del Ayatolá Jameneí 👉@khamenei_es
KHAMENEI.IR | 𝕏 | Facebook| TikTok
#Israel aprueba acuerdo para la liberación de 50 rehenes retenidos por #Hamás y un alto el fuego de cuatro días en los combates en #Gaza
https://www.haaretz.com/israel-news/2023-11-22/ty-article-live/israeli-cabinet-okays-deal-for-release-of-50-hostages-held-by-hamas-temporary-cease-fire/0000018b-f52c-d117-abcf-f7ef5d450000
El consejo de ministros de #Israel decreta el fin de abastecimiento eléctrico y de combustible a #Gaza como parte de una respuesta destinada a «destruir las capacidades militares y gubernamentales de #Hamás»
Netanyahu: «Nos dirigimos hacia una guerra larga y agotadora»
Como en toda guerra inter-imperialista, los trabajadores y las clases subalternas de un lado y otro serán hambreadas, sacrificadas y convertidas carne de cañón por sus explotadores de un lado y otro del muro de Gaza.
https://www.haaretz.com/israel-news/2023-10-07/ty-article-live/israel-under-attack-terrorists-infiltrate-from-gaza-amid-massive-rocket-barrages/0000018b-088b-dae9-adcb-abbff50f0000#21849623
#Hamás: #antisemitismo y #sexismo dando forma a las acciones militares hasta convertirlas en el mejor reflejo de su brutalidad doblemente reaccionaria
«Una investigación del Times descubrió nuevos detalles que muestran un patrón de violaciones, mutilaciones y brutalidad extrema contra las mujeres en los ataques a Israel»
https://www.nytimes.com/2023/12/28/world/middleeast/oct-7-attacks-hamas-israel-sexual-violence.html
#Israel#Palestina. #Hamás y la #YihadIslámica dan prueba del salvajismo propio de un proyecto explotador y antihumano al centrar sus objetivos en el secuestro, la tortura, vejación y asesinato de rehenes
«Serían muy numerosos, según las imágenes transmitidas en los vídeos, de los terroristas y especialmente atroces. Como el de la joven israelí ensangrentada, subida a un jeep, desfilada y arrastrada por el pelo, gritando “Allah Akbar”, en medio de un grupo de hombres que luego se abalanzaron sobre ella en el coche.»
«Varias familias con niños fueron secuestradas en comunidades agrícolas situadas a pocos kilómetros de la frontera en Kfar Aza, Be'eri y Ein Hashlosha. Los atacantes los empujan junto a tanques robados al ejército y los filman haciendo el signo de la V de la victoria. En otras imágenes, los civiles mueren a quemarropa. Nadie del lado israelí puede indicar por el momento el número de rehenes. En este momento se están produciendo combates callejeros y las fuerzas especiales finalmente han entrado en la zona atacada y en la ciudad de Sderot, para atacar a todos los comandos islamistas que tengan rehenes. Miembros de Hamas incluso estuvieron presentes en las calles de Ashkelon, una señal de que la conmoción y el sentimiento de pánico se están apoderando del país.»
https://www.marianne.net/monde/proche-orient/attaque-du-hamas-la-tragedie-des-otages-israeliens-et-les-failles-du-mossad