Что делать если нужно поставить какую-то 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
Antonio #Guterres ha avvertito gli Stati membri dell'#Onu di un "imminente collasso finanziario" in una lettera nella quale chiede di "onorare pienamente e tempestivamente i propri obblighi di pagamento" o di "rivedere approfonditamente le regole finanziarie dell'#Onu"; #Guterres sottolinea che "le decisioni di non onorare i contributi obbligatori che finanziano una parte significativa del bilancio ordinario approvato sono state ora annunciate ufficialmente" e afferma che "l'attuale traiettoria è insostenibile. Espone l'organizzazione a un rischio finanziario strutturale e impone una scelta netta: o gli Stati membri accettano una revisione radicale delle nostre regole finanziarie, oppure devono accettare la prospettiva concreta di un collasso".
@UltimoraPolitics24
❗️#Afrique : déficit massif
L’Afrique fait face à un déficit annuel de financement du développement pouvant atteindre 1,6 trillion de dollars, a déclaré le secrétaire général de l’#ONU António #Guterres lors du forum régional sur le développement durable à Addis-Abeba.
Parmi les freins cités : les conflits, la crise de la dette, les taux d’emprunt élevés, les difficultés climatiques et infrastructurelles, la rapide urbanisation et les barrières commerciales. Guterres rappelle aussi les atouts du continent : la zone de libre-échange africaine, les énergies renouvelables, le numérique et une main-d’œuvre jeune.
RT en français • Osez questionner !
#Italia#CongressoA1MDP
Luigi #DiMaio (#M5S|NI): "Sul piano economico è già una guerra mondiale. Siamo impegnati per ridurre ed eliminare la nostra dipendenza dal gas russo. Dobbiamo promuovere cessate il fuoco. Sosteniamo l'iniziativa del segretario ONU #Guterres."
@UltimoraPolitics
News: #UN, #EU raise alarm over escalating tensions in #Tigray, call for de-escalation and dialogue
International actors have voiced serious concern over reported military confrontations and rising tensions in Tigray urging all parties to exercise restraint, uphold peace agreements, and resolve differences through dialogue to avoid a return to broader conflict.
The United Nations Secretary-General, António #Guterres, said he is closely following developments in northern Ethiopia, where renewed clashes have contributed to a worsening security environment.
In a statement delivered by the Deputy Spokesperson for the Secretary-General, Farhan Haq, the UN chief warned that the situation threatens to reverse the gains made since the Permanent Cessation of Hostilities Agreement was signed in November 2022 and called on all sides to pursue peaceful resolution and rebuild trust.
In a parallel statement, earlier on Saturday, the European Union, through its....
Read more: https://addisstandard.com/?p=54881
❗️#Afrique : déficit massif
L’Afrique fait face à un déficit annuel de financement du développement pouvant atteindre 1,6 trillion de dollars, a déclaré le secrétaire général de l’#ONU António #Guterres lors du forum régional sur le développement durable à Addis-Abeba.
Parmi les freins cités : les conflits, la crise de la dette, les taux d’emprunt élevés, les difficultés climatiques et infrastructurelles, la rapide urbanisation et les barrières commerciales. Guterres rappelle aussi les atouts du continent : la zone de libre-échange africaine, les énergies renouvelables, le numérique et une main-d’œuvre jeune.
RT en français • Osez questionner !
#ONU#Gaza#Israele
Segretario Generale ONU António #Guterres (#PS|S&D): "Il Consiglio di Sicurezza ha appena approvato una risoluzione tanto attesa su Gaza, chiedendo un cessate il fuoco immediato e il rilascio immediato e incondizionato di tutti gli ostaggi. Questa risoluzione deve essere attuata. Il fallimento sarebbe imperdonabile."
@OsservatorioEsteri
#Elezioni#Portogallo#Presidenziali
António José #Seguro (#PS|S&D) eletto nuovo Presidente del Portogallo. Assistente del Primo Ministro durante il governo di António #Guterres, Seguro guidò il Partito Socialista tra il 2011 e il 2014.
@OsservatorioEsteri
#Israele#ONU
Ministro degli Esteri Israel #Katz (#Likud|ECR): "Oggi ho deciso di dichiarare il Segretario generale dell'ONU Antonio #Guterres una persona non desiderata in Israele e di vietargli l'ingresso in Israele. Coloro che non sono in grado di condannare senza ambiguità l'attacco criminale dell'Iran contro Israele, come hanno fatto quasi tutti i paesi del mondo, non sono degni di calpestare il suolo israeliano. Si tratta di un segretario generale che non ha denunciato il massacro e i crimini sessuali perpetrati dagli assassini di Hamas il 7 ottobre, e non ha portato a decisioni che li dichiareranno organizzazione terroristica. Un segretario generale che dà una spinta ai terroristi, stupratori e assassini di Hamas, Hezbollah, gli Houthis, e ora la nave madre del terrorismo globale, l'Iran, sarà ricordato come una macchia nella storia dell'ONU. Israele continuerà a proteggere i suoi cittadini e manterrà il suo status nazionale e la sua dignità con o senza Antonio Guterres."
@OsservatorioEsteri
#Guterres, Seg Gen dell'#ONU: "E' possibile uno scontro armato tra #Turchia e #YPG, in corso un momento di dialogo tra #Ankara e #Qatar su questo tema. E' necessaria una soluzione per il carcere di #AlHol, dove sono trattenuti i militanti #ISIS".