Что делать если нужно поставить какую-то 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
Сегодня стартовала кампания People First https://people1st.online/ru/
На фоне деклараций о скором прекращении боевых действий десятки НКО из Украины, России и многих других стран мира, объединившись, требуют:
В соответствии с нормами международного права все украинские гражданские лица, захваченные и незаконно удерживаемые российскими вооруженными силами, включая осужденных российскими судами, должны быть освобождены незамедлительно и без каких-либо условий с предоставлением возможности вернуться домой. Тем из них, чей дом находится на территориях, контролируемых Россией, должна быть предоставлена возможность уехать на подконтрольную украинским властями территорию страны, если они того пожелают.
Все незаконно перемещенные или депортированные дети должны быть возвращены в Украину.
Также необходимо обеспечить своевременную репатриацию депортированных украинских осужденных и пациентов закрытых лечебных учреждений, таких как дома престарелых и психиатрические лечебницы.
Должны быть предприняты все возможные усилия как можно скорее вернуть на родину военнопленных, посредством обменов или иным образом, не позднее, чем по завершении активных боевых действий, как того требуют Женевские конвенции.
Российские политические заключенные, уже приговоренные к лишению свободы или находящиеся в предварительном заключении в связи со своими антивоенными высказываниями или действиями, должны быть освобождены и иметь возможность пользоваться неограниченной свободой передвижения, включая выезд из страны при наличии такого желания.
Должен быть создан независимый международный механизм для координации этих процессов, мониторинга их соответствия нормам международного гуманитарного права, а также предоставления регулярных и прозрачных отчетов о достигнутом прогрессе, включая регулярную информацию об освобождении пленных и соблюдении гуманитарных стандартов.
Россия должна немедленно предоставить агентствам ООН и МККК полный доступ ко всем пленным и ко всем незаконно перемещенным или депортированным детям.
#People1st
2 марта в 25 городах Италии прошли митинги в поддержку Украины. Их организаторы — партия Azione di Carlo Calenda и диаспоры Украины в Италии — выступили в Риме на митинге, совместно с представителями Stati Uniti d'Europa, Azione, +Europa, Italiani Radicali, Liberi Oltre, Partito Democratico, fondazione Einaudi и др.
Russi Contro la Guerra также представили свою позицию по вопросу и рассказали о несогласных в России с политикой Путина, войной и бесчеловечными условиями содержания пленных. Мы активно выразили солидарность с Украиной и обратились к Италии и ЕС с просьбой усилить поддержку Украине в этот нестабильный период.
Видео
https://m.youtube.com/watch?v=hw9gEGigQw0
#russicontrolaguerraitalia
#SaveUkraine
#People1st
#rawitaly
#FreeRussiansGlobal
22-24 февраля 2025 года проходит глобальная акция россиян «Защита Украины – защита мира»
Три года назад, 24 февраля 2022 года, путинская власть начала полномасштабную войну против Украины. В эту тяжёлую дату россияне выходят по всему миру, чтобы выразить неизменную солидарность с народом Украины. Мы напоминаем о том, что сейчас Украина сражается не только за свой суверенитет, но и за мирную демократическую Европу. Мы призываем лидеров западных государств не прекращать помощь Украине и предоставить стране необходимые гарантии безопасности.
В рамках всемирной акции проходит сбор средств на покупку портативных электростанций для больниц и школ Украины «Энергия для жизни».
Участники акции также поддержат международную кампанию за освобождение людей, насильно удерживаемых в результате вторжения России в Украину «Люди превыше всего», инициированную коалицией правозащитных организаций разных стран.
Присоединяйтесь к глобальной акции, где бы вы ни находились. Пожалуйста, заполните форму с информацией о вашем мероприятии.
#ThreeYearsofTerror#Guarantees4UA#People1st#EnergyForUkraine#WeStandWithUkraine#RussiansAgainstWar#FreeRussiansGlobal
23 февраля, накануне третьей годовщины полномасштабной войны России против Украины, в центре Рима прошла антивоенная акция THREE YEARS OF TERROR.
Акцию организовали активисты Russi Contro la Guerra совместно с объединением демократических диаспор Free Russians Global Свободные россияне / Free Russians Global . В своих выступлениях участники говорили о проблемах и трагедиях, которые уже три года не теряют актуальность: нечеловеческие условия содержания украинских военнопленных в российских тюрьмах, огромные тюремные сроки за инакомыслие в России, депортация детей с оккупированных украинских территорий, тотальная прокремлевская пропаганда, бомбардирующая граждан как внутри России, так и в других странах.
Активисты зачитали письма и обращения российских политических заключенных. Вот отрывок из последнего слова Алексея Горинова: «Насилие, агрессия, порождают только ответное насилие и ничего более. Вот истинная причина наших бед, страданий, наших бессмысленных жертв, разрушений объектов гражданской и промышленного инфраструктуры, наших жилищ. Давайте прекратим эту кровавую, никому не нужную бойню — ни нам, ни жителям Украины. Не пора ли оставить в покое наших соседей и заняться своими внутренними проблемами, которые нарастают, как снежный ком».
Через три года войны, когда резко меняется мировая политическая ситуация, эта акция около Римских форумов, в историческом центре европейской цивилизации, напомнила: белое – это белое, а черное – это черное. Агрессор остается агрессором, военных преступников необходимо судить, а христианская религия и церковь – это не рупор тезисов государственной власти.
В ходе акции собирали средства на закупку портативных электростанций для больниц и школ Украины (благотворительный проект «Энергия для жизни» Антивоенный Комитет России ),
После окончания акции желающие присоединились к большому шествию, организованному украинской диаспорой.
#3yearsofterror#rawitaly#russiagainstwar#WeStandwithUcraine
#russicontrolaguerra
#People1st#stoppropaganda#SaveUkraine
Поддержите нашу кампанию в соц. сетях!
Мы, антивоенные активисты, правозащитники, все, кто выступает против войны, в свете приближающейся встречи президента США Дональда Трампа и Владимира Путина, опасаемся, что эта встреча может привести к заключению тактического краткосрочного соглашения, которое может нанести непоправимый ущерб Украине, Европе и международной безопасности, а судьбы людей, находящихся в плену, не станут приоритетом соглашения сторон.
Мы хотим привлечь внимание к жизни всех и каждого незаконнозадержанного – украинских гражданских, депортированных украинских детей, украинских военнопленных и российских политзаключенных, оказавшихся в заключении за свою антивоенную позицию. Мы приглашаем вас присоединиться к нашему флешмобу, чтобы вернуть внимание к жизням людей и требовать безусловного освобождения всех узников этой войны.
Напишите Free people first на ладони вашей руки и выложите фотографию в социальные сети. Присылайте ваши фото в бот t.me/People1rst_bot.
—————
Підтримайте нашу кампанію в соцмережах!
Ми, антивоєнні активісти, правозахисники та всі, хто виступає проти війни, з огляду на майбутню зустріч президента США Дональда Трампа та Володимира Путіна, переймаємося, що ця зустріч може призвести до укладення тактичної короткострокової угоди, яка може завдати непоправної шкоди Україні, Європі та міжнародній безпеці, а доля полонених не буде пріоритетом для сторін.
Ми хочемо привернути увагу до життя кожного й кожної з числа незаконно поневолених — українських цивільних осіб, депортованих українських дітей, українських військовополонених та політичних в'язнів, які були ув'язнені за свою антивоєнну позицію. Ми запрошуємо вас приєднатися до нашого флешмобу, щоб привернути увагу до життя людей і вимагати безумовного звільнення всіх бранців російської війни в Україні.
Напишіть Free people first на долоні своєї руки та викладіть фото в соціальні мережі. Надсилайте свої фото в бот t.me/People1rst_bot.
—————
Support our campaign in social media
We, anti-war activists, human rights defenders, and all those who oppose war, in light of the upcoming meeting between US President Donald Trump and Vladimir Putin, fear that this meeting could lead to a tactical short-term agreement that could cause irreparable damage to Ukraine, Europe and international security, and that the fate of those held captive will not be a priority for the parties to the agreement.
We want to draw attention to the lives of each and every one of those illegally detained — Ukrainian civilians, deported Ukrainian children, Ukrainian prisoners of war and Russian political prisoners who have been imprisoned for their anti-war stance. We invite you to join our flashmob to draw attention back to people's lives and demand the unconditional release of all prisoners of this war.
Write Free people first on the palm of your hand and post a photo on social media. Send your photo to our bot t.me/People1rst_bot.
#People1st#BringPeopleHomeFirst#ЛюдиПревышеВсего#PeopleAreNotNegotiable#PeopleAreKey#ЛюдиKлючові#FreePeopleFirst#FreeThemAll