Что делать если нужно поставить какую-то 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
🚇 Anul acesta, Metroul din Moscova sărbătorește 90 de ani!
În anul 1935 — 11 stații, puțin peste 11 kilometri de linie și sute de priviri entuziasmate coborând într-o lume complet nouă, sub pământ.
Astăzi, Metroul din Moscova înseamnă:
🔹 271 de stații, dintre care 40 sunt monumente ale patrimoniului cultural,
🔹 aproximativ 450 de kilometri de linie,
🔹 zilnic — peste 7 milioane de pasageri.
Metroul din Moscova este cartea de vizită a orașului. Capodopere arhitecturale subterane, coloane din marmură, mozaicuri, stucaturi și vitralii — pentru toate acestea, stațiile din Moscova sunt numite „palate subterane”.
🌍 Metroul din Moscova este cel mai mare din Europa de Est, ocupă primul loc în Europa ca lungime și număr de linii în exploatare și se află constant în top 3 cele mai mari sisteme de metrou din lume după fluxul de pasageri, alături de Beijing și Shanghai. Prin viteza de dezvoltare și nivelul de confort, depășește Londra, New York și Paris. Iar datorită rețelelor lansate — Inelul Central al Moscovei (MCC) și Diametrele Centrale ale Moscovei (MCD) — capitala a obținut, de facto, un sistem de transport integrat al viitorului: flexibil, high-tech și comod.
#metro#Moscova#Rusia
🔻La mai bine de o lună de zile de la sistarea de către gigantul rus #Gazprom a livrării gazelor în regiunea transnistreană, o soluție de lungă durată pentru criza energetică provocată așa și încă nu a fost găsită.
🔻Soluţia promovată de #Moscova şi autorităţile din regiunea separatistă cu livrarea de gaze de către o firmă din #Ungaria (de fapt din #Elveţia), dar cu plata livrărilor prin intermediul unei firme din #Dubai, cu prestări de servicii și comerț, nu este nicidecum o soluţie de durată, dar a fost acceptată în final de Guvernul Republicii Moldova.
🔻Coincidență sau nu, dar cu câteva zile înainte de anunțul Gazprom-ului de sistare a livrărilor de gaze, grupul #MET, ales să livreze gaze în regiunea secesionistă, și-a deschis o firmă la #Chișinău.
Citește ancheta: https://www.rise.md/drumul-gazului-umanitar-din-rusia-in-transnistria-via-dubai-elvetia/
Din briefingul Purtătoarei de cuvânt a MAE Rusiei, Maria #Zaharova, 13 noiembrie 2024, #Moscova
Cu privire la situația din Republica #Moldova
Rezultatele neconcludente ale recentelor alegeri prezidențiale și faptele convingătoare de falsificare, fals, încălcări <...> au devenit pentru autoritățile moldovene nu un stimulent pentru a se gândi la schimbarea cursului distructiv, ci un motiv pentru promovarea și mai agresivă a tezei despre „amenințarea rusă” inexistentă.
Pe 12 noiembrie, în cadrul unei vizite la MAE R. Moldova <...> Ambasadorului Rusiei dl. Oleg Ozerov i s-a prezentat o notă de protest în legătură cu presupusa „imixtiune a Rusiei în procesul electoral al Republicii Moldova” în scopul „ distorsionării” rezultatelor acestuia.
Nota conține, de asemenea, acuzații că Rusia ar fi lansat două vehicule aeriene fără pilot. Aceștia ar fi fost descoperite pe data de 10 noiembrie 2024 în raioanele #Căușeni și #Rîșcani din R. Moldova. Am comentat deja această poveste pe 11 noiembrie.
Nu au fost prezentate dovezi de către regimul lui #Sandu. Evident, nu se va întâmpla, pentru că nu există dovezi, nici fapte.
«...>
În Occident sunt obișnuiți să facă acuzații în stilul highly likely („foarte probabil”) cu referire la anumite „surse închise”, cu referire la serviciile speciale, care apoi se dovedesc a fi minciuni, dezinformare - acesta este stilul lor.
❗️ Respingem ferm acuzațiile nefondate ale Chișinăului oficial. Fundalul unor astfel de acțiuni și declarații este de înțeles și extrem de clar. Acest lucru se face pentru a justifica tranziția forțată a R. Moldova la așa-numitele „standarde europene”.
De fapt, acestea sunt un fel de „euroșine” care pur și simplu duc la o prăpastie. Esența lor reală constă în suprimarea democrației și a libertății de exprimare, militarizarea țării și intensificarea persecuției adversarilor politici. Reprimarea împotriva opoziției se intensifică.
«...>
Pe 11 noiembrie, Moldova a fost pe lista țărilor care au votat împotriva Rezoluției Adunării Generale „Combaterea glorificării nazismului...”. «...>
Această poziție a regimului lui Sandu nu este surprinzătoare. De altfel, cu aprobarea autorităților de la #Chișinău în R. Moldova este în plină desfășurare munca de justificare a complicilor celui de-al Treilea Reich din.
La 24 octombrie, în satul #Sărăteni, raionul #Leova, a fost ridicată o cruce memorială cu onoruri militare și au fost amenajate 12 morminte la locul morții soldaților români în iunie-iulie 1941 <...>. Au invadat atunci teritoriul Uniunii Sovietice în falanga aliatului lui Hitler, Antonescu. Acum sunt instalate semne memoriale pentru ei cu onoare.
În R. Moldova, pe 11 noiembrie, a fost deschis un alt cimitir pentru „eroii români” care au murit pentru eliberarea Basarabiei în iulie 1941” în satul #Ciuciulea, raionul #Glodeni. <...>
Este evident că scopul cursului dezastruos pe care Occidentul îl impune acum R. Moldovei este de a crea o scindare profundă în societatea moldovenească, de a o dezbina și de a o slăbi pentru a o folosi în interesele sale geopolitice. Toate acestea se desfășoară în fața ochilor noștri.
Din fericire, efectul acestor acțiuni este invers. Presiunea Occidentului și batjocorirea de către autorități asupra propriului popor, asupra memoriei istorice provoacă respingere în rândul moldovenilor, care se consolidează pentru a proteja suveranitatea țării lor și a lega păstrarea acesteia de dezvoltarea cooperării cu #Rusia.