TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #210 · 3 фев.

Что делать если нужно поставить какую-то 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

Резултати

Пронајдени 2 слични објави

Пребарај: #antiwar

当前筛选 #antiwar清除筛选

Ciao! 24.6. La guerra su vasta scala della Russia contro l'Ucraina dura ormai da 3 anni e 4 mesi. 1217 giorni. Leggiamo le notizie e vediamo come le città ucraine siano costantemente sottoposte ai bombardamenti più brutali. Vediamo case rase al suolo, l'impotenza e la tragedia dei civili, le lacrime dei genitori, le fotografie dei morti. 24.6 - Sono stati lanciati 368 missili e droni contro l'Ucraina. Regioni di Kiev, Dnepr, Donetsk, Kharkov, Sumy, Odessa. Secondo i dati preliminari, 19 persone sono morte, compresi bambini, e decine sono rimaste ferite. Oggi, edifici residenziali, scuole, asili e strutture mediche sono stati nuovamente distrutti. Importante di ricordarvi le nostre proteste a sostegno dell’Ucraina e ribadire ancora una volta: non abituatevi alla guerra! https://www.instagram.com/share/p/BAiwoNaDDM?fhid=QkFpd29OYURETQ Cosa più importante, vi chiediamo di sostenere la raccolta fondi del Comitato contro la Guerra. Si tratta di una raccolta punti attualmente in corso, che potremmo chiudere rapidamente tutti insieme, per le centrali elettriche portatili dell'Ospedale N7 di Zaporižžja. https://antiwarcommittee.info/en/energy-for-life/ L'importo totale mancante è di € 11.000 (su € 26.000). Siamo almeno 20 organizzazioni e se ognuna di esse raccoglie 500 euro, un lotto di questi generatori, già in attesa nel magazzino del fornitore, potrà essere spedito in Ucraina nel giro di pochi giorni. Crediamo che ci saranno 100 persone che riusciranno a trasferire 5 €! https://antiwarcommittee.info/en/energy-for-life/#donate (Tutte le spese saranno trasferite centralmente sul conto dei nostri colleghi dell'organizzazione spagnola, che elaboreranno l'ordine e supervisioneranno la consegna.) Pubblicheremo il resoconto sui social network! Per qualsiasi domanda, contattare: [email protected] #energy4UA #energy4life #russicontrolaguerra #antiwar

Привет! 24.6. Уже 3 года и 4 месяца длится полномасштабная война России против Украины. 1217 дней.. Мы смотрим новости и видим, как украинские города постоянно подвергаются жесточайшим обстрелам. Видим до основания разрушенные дома, беспомощность и трагедию мирных жителей, слезы родителей, фотографии погибших людей. 24.6 - 368 ракет и дронов было выпущено по Украине. Киев, Днепр, Донецкая, Харьковская, Сумская, Одесская область. По предварительным данным, погибло 19 человек, среди них дети, десятки раненых. Сегодня снова были разрушены жилые дома, школы, детские сады, медицинские учреждения. Хочется напомнить о наших протестах в поддержку Украины и сказать ещё раз - не привыкайте к войне! https://www.instagram.com/share/p/BAiwoNaDDM?fhid=QkFpd29OYURETQ И самое главное, просим вас поддержать сбор Антивоенного комитета. Это актуальный на данный момент точечный сбор, который мы все вместе смогли бы быстро закрыть - на портативные электростанции для Запорожской больницы N7. https://antiwarcommittee.info/energyforua/ Недостающая общая сумма €11.000 (из €26.000). Нас минимум 20 организаций, и если каждая соберет по €500, то партия этих генераторов, которая уже ждёт на складе у поставщика, сможет в считанные дни отправиться в Украину. Верим, что наберется 100 человек, которые смогут перевести по €5! https://antiwarcommittee.info/energyforua/#donate (Все сборы централизованно пойдут на счет наших коллег из испанской организации, которые оформят заказ и проконтролируют доставку.) Отчёт мы разместим в соцсетях! Если есть вопросы, задавайте: [email protected] #energy4UA #energy4life #russicontrolaguerra #antiwar