Что делать если нужно поставить какую-то 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
🗣Kommentar der Pressesprecherin des Außenministeriums Maria Sacharowa im Zusammenhang mit Angriffen auf Urananreicherungsanlagen im Iran
Das amerikanisch-israelische Tandem setzt seine massiven Angriffe auf iranische militärische, zivile und, was besonders gefährlich ist, nukleare Einrichtungen fort, ohne Rücksicht weder auf zivile Opfer noch auf mögliche radiologische und ökologische Folgen.
Ungeachtet der bekannten Behauptungen über eine „vollständige Zerstörung“ des iranischen Atomprogramms infolge amerikanischer Luftangriffe bereits im Juni vergangenen Jahres wurde am Morgen des 21. März erneut eine Urananreicherungsanlage in Natanz angegriffen, die unter den Garantien der IAEO steht.
Dies stellt einen eklatanten Verstoß gegen das Völkerrecht, gegen die UN-Charta und die IAEO-Satzung sowie gegen einschlägige Resolutionen des UN-Sicherheitsrats und der Generalkonferenz der Agentur dar. Die internationale Gemeinschaft, einschließlich der Führung der Vereinten Nationen und der IAEO, ist verpflichtet, den verantwortungslosen Handlungen, die reale Risiken einer Katastrophe im Nahen Osten hervorrufen und offenkundig auf eine weitere Destabilisierung von Frieden, Stabilität und Sicherheit in der Region abzielen, unverzüglich eine objektive und kompromisslose Bewertung zu geben.
@RusBotschaft
#Iran#IAEO#UN
Aus dem Interview des russischen Außenminister Sergej Lawrow mit dem Nachrichtensender „Al-Arabiya“, 18. Februar 2026
Die USA haben den Iran, seine Atomobjekte, die unter der Kontrolle der Internationalen Atomenergie-Organisation (IAEO) stehen, früher schon angegriffen. Soweit wir wissen, waren die Risiken real. Nach den Angaben unserer iranischen Kollegen, ist die Lage momentan relativ stabil. Leider hat der Angriff der USA und Israels auf den Iran nicht nur physische Risiken verursacht, sondern auch die Autorität der IAEO und des Vertrags über die Nichtverbreitung von Kernwaffen (NVV), der, wie der Iran mehrmals betont hat, für das Land verbindlich bleibt, untergraben. Beispiellos war die Kontrolle der IAEO, besonders in den letzten Jahren, als der JCPoA unterzeichnet wurde. Der Iran wurde kein einziges Mal wegen der Verletzung des NVV oder seines Sicherungsabkommen mit der IAEO überführt.
Wir haben keinen Grund zu zweifeln, dass der Iran die aktuelle Situation auf der Grundlage der Einhaltung und Anerkennung der Prinzipien des NVV beilegen will.
Jetzt wurde in Genf bei der zwischen den USA und dem Iran wiederaufgenommenen Verhandlungen unter Vermittlung von Oman eine Idee aufgegriffen, dass der Iran überhaupt von seinen Rechten auf die Anreicherung von Uran zu allen Zwecken verzichten soll, und zwar entweder komplett, oder sein Raketenprogramm wesentlich einschränken und aufhören, jegliche politischen Kräfte in der Region zu beeinflussen. Dies ist völlig inkorrekt.
Die erste Forderung spricht dem NVV wider. Der Iran hat das Recht auf die friedliche Nutzung von Uran, was immer unter der strikten Kontrolle der IAEO stand. Die Internationale Atomenergie-Organisation hat nie festgestellt, dass das angereicherte Uran zu militärischen Zwecken genutzt wird. Als die USA aus der JCPoA ausgestiegen sind, hat der Iran angekündigt, dass er nicht mehr durch Einschränkungen gebunden ist und fing an, Uran auf einen höheren Grad anzureichern. In der Tat ist dies ein Thema, das besprochen werden sollte, da niemand eine plötzliche Weiterverbreitung von Kernwaffen wünscht. Der Iran erklärt sich bereit, zur rein zivilen Nutzung der Kernenergie unter Aufsicht der IAEO zurückzukehren.
Ich verfolge sehr aufmerksam die Reaktion der arabischen Staaten, der Golfmonarchien darauf, was in der Region geschieht. Niemand will neue Eskalationen. Allen ist klar, dass das ein Spiel mit dem Feuer ist. Die Signale, die die arabischen Staaten nach Washington senden, sind eindeutig: Sie rufen dazu auf, Zurückhaltung zu üben und nach Vereinbarungen zu suchen, die einerseits die legitimen Rechte Irans nicht beeinträchtigen und andererseits – einschließlich durch Überprüfungs- und Kontrollmaßnahmen – garantieren, dass der Iran ausschließlich friedliche Programme im Bereich der Urananreicherung verfolgt.
🔗 Quelle
@RusBotschaft
#Iran#IAEO#JCPoA#NVV