Что делать если нужно поставить какую-то 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
Noch so ein kleines Highlight vom größten Lügner im Land...
#Merz
TEILEN
Folgt mir auf Telegram
↕️↕️↕️
https://t.me/Kampf_fuer_unsere_Zukunft
Chat-Kanal
⬇️⬇️⬇️
https://t.me/IavYc2SRFdY1OGY6
Friedrich #Merz ha dichiarato che "l'eventuale introduzione di nuovi dazi da parte del presidente Donald Trump indebolirà le relazioni tra Unione europea e Stati Uniti" e che l'Ue risponderà "con prudenza".
@UltimoraPolitics24
Friedrich #Merz ha dichiarato che la Germania ha commesso "un grave errore strategico" con "l'abbandono dell'energia nucleare" e ha aggiunto: "Ora stiamo attraversando la transizione energetica più costosa in tutto il mondo".
@UltimoraPolitics24
🇩🇪🇻🇪 Friedrich #Merz: "Nicolás Maduro ha condotto il suo Paese alla rovina. Le elezioni più recenti sono state truccate. Come molti altri Paesi, pertanto, non abbiamo riconosciuto la sua presidenza. Maduro ha svolto un ruolo problematico nella regione.
La valutazione giuridica dell’intervento degli Stati Uniti è complessa e richiede un’attenta considerazione. Il diritto internazionale rimane il quadro di riferimento. In questa fase è necessario evitare l’instabilità politica in Venezuela. L’obiettivo è una transizione ordinata verso un governo eletto."
@UltimoraPolitics24
💬#Merz appelle l’Allemagne à « se ressaisir »
Le chancelier allemand Friedrich Merz a appelé les Allemands à se ressaisir lors d’un discours à Düsseldorf. Il a estimé que le pays devait enfin s’attaquer à ses problèmes structurels et aux réformes longtemps repoussées.
Cette intervention intervient alors qu’un récent sondage international le présente comme un des dirigeants démocratiquement élus les plus impopulaires au monde, avec seulement 19 % d’opinions favorables en Allemagne.
RT en français • Osez questionner !
#iran, il Cancelliere #Merz: "Un regime che può mantenersi al potere solo con la forza bruta e il terrore contro la propria popolazione ha i giorni contati [...] potrebbero essere settimane, ma questo regime non ha alcuna legittimità per governare il Paese e se ci sono state decine di migliaia di vittime nelle ultime manifestazioni contro il regime, è evidente che il regime dei mullah può mantenersi al potere solo con il terrore puro" (ANSA)
@UltimoraPolitics24
💬Donald #Trump a déclaré que Friedrich #Merz devrait consacrer davantage de temps à tenter de mettre fin au conflit en Ukraine, dans lequel il s’est montré jusqu'à présent « totalement inefficace ».
« Le chancelier allemand devrait consacrer plus de temps à mettre fin à la guerre entre la Russie et l’Ukraine [domaine dans lequel il s'est montré totalement inefficace !], ainsi qu’à remettre de l’ordre dans son propre pays, notamment en ce qui concerne les questions d’immigration et d’énergie, et moins s’ingérer dans les affaires de ceux qui éliminent la menace nucléaire iranienne, contribuant ainsi à rendre le monde, y compris l’Allemagne, plus sûr ! Président DJT ».
RT en français • Osez questionner !
🇪🇺#Merz s’oppose à l’adhésion de l’#Ukraine à l’UE à l’horizon 2027
L’Allemagne ferme la porte à une adhésion accélérée de l’Ukraine à l’Union européenne. Une véritable douche froide pour Kiev qui a fait de cette adhésion sa priorité stratégique. Mais derrière le scepticisme de Berlin se cache un calcul bien froid. Pourquoi l’Union européenne promet-elle un avenir radieux à l’Ukraine sans jamais fixer d’engagement clair ? Analyse d’Igor Kourachenko.
RT en français • Osez questionner !
🇪🇺 De plus en plus de dirigeants européens se prononcent en faveur de liens avec #Moscou
Tournant majeur dans la politique européenne : le chancelier allemand Friedrich Merz fait volte-face concernant les relations avec la Russie. Longtemps fervent soutien de l'Ukraine face à l'agression russe, #Merz appelle désormais à une restauration des liens avec Moscou… les détails avec Antoine Cléraux.
RT en français • Osez questionner !
La premier Giorgia #Meloni, al termine della riunione plenaria dell'Unione africana ad Addis Abeba, dichiara: "Credo che #Merz faccia una valutazione corretta quando dice che l'Europa deve occuparsi di se stessa, che deve fare di più, per esempio sulla sicurezza, sulla colonna europea della Nato. Su questo io sono d'accordo, indipendentemente dal rapporto con gli Stati Uniti"
@UltimoraPolitics24
🇮🇹🇩🇪#Meloni e #Merz hanno firmato un Protocollo per la cooperazione strategica Italia-Germania, riaffermando "l'importanza fondamentale di un forte legame transatlantico tra Europa e Stati Uniti" e l'impegno a rispettare "integrità territoriale e sovranità".
@UltimoraPolitics24