Что делать если нужно поставить какую-то 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
🗓️82 года назад: арктический конвой PQ-14 и героический путь
8 апреля 1942 года из порта Исландии вышел арктический конвой PQ-14: 24 торговых судна под охраной военных кораблей. Никто не мог предугадать, что впереди их ждал один из самых опасных морских маршрутов в истории войны.
Почти сразу после отплытия конвой столкнулся с жесточайшим арктическим штормом. Ураганные ветры и волны высотой с многоэтажный дом разметали корабли. 16 судов были вынуждены вернуться в Исландию из-за повреждений.
Но 8 кораблей продолжили свой путь. Моряки работали посменно, сбивая лед с палуб и надстроек при температуре -30°C, чтобы суда не перевернулись. Обмороженные пальцы, обледеневшая одежда, постоянная угроза атак немецких подводных лодок и самолетов – но они шли вперед наперекор всем вызовам.
Каждое судно, которое доплыло до Мурманска, доставило жизненно важные для советского фронта танки, самолеты, боеприпасы, продовольствие и медикаменты. Эти грузы стали вкладом в будущую победу.
Арктические конвои – один из самых ярких примеров сотрудничества союзников во Второй мировой войне. Свыше 3000 британских моряков отдали свои жизни, чтобы доставить помощь на восточный фронт.
В годовщину 80-летия Победы в Европе мы вспоминаем всех тех, кто, преодолевая невероятные трудности, приближал день мира в Европе.
#VE80#АрктическиеКонвои#ArcticConvoys
📅 84-ая годовщина отбытия Арктических конвоев 📅
«Сегодня я нахожусь в Шотландии, чтобы отметить 84-ую годовщину отбытия Северных конвоев и почтить память более чем 3 тысяч британских военнослужащих и моряков, которые отдали свои жизни, чтобы доставить важную помощь Советскому Союзу во время войны.
Конвои — это очень важная часть нашей общей истории. Мы вспоминаем тех, которые отдали свои жизни в общей борьбе против нацизма», — сказал атташе по вопросам обороны посольства Великобритании в России капитан 1 ранга Адриан Когхилл.
Капитан Когхилл сегодня в 🏴 Шотландии отдал честь всем участникам Арктических конвоев, которые в критически важное время принесли самую большую жертву в борьбе за свободу в Европе. Атташе также примет участие в мемориальном мероприятии.
Арктические конвои – один из самых ⚡ярких примеров сотрудничества союзников во #WW2 Второй мировой войне, символ международного сотрудничества перед лицом общей угрозы. Свыше 3000 британских моряков отдали свои жизни, чтобы доставить помощь на восточный фронт.
За годы войны через Арктические конвои в СССР было доставлено более 4 миллионов тонн грузов, включая 7,000 самолетов, 5,000 танков, тысячи грузовиков, сотни тысяч тонн топлива и продовольствия. Этот 🔗 поток помощи составил около четверти всей поддержки, оказанной Советскому Союзу союзниками.
В годовщину 80-летия Победы в Европе #VEDay80 мы вспоминаем всех тех, кто, преодолевая невероятные трудности, приближал день 🌏 мира в Европе.
#VE80#ArcticConvoys
#OTD 84 года назад 🥇 из арктических конвоев вышел из Хвалфьорда в Исландии в Россию и через 🔟 дней прибыл в Архангельск.
С августа 1941 года по май 1945 года было проведено 78 конвоев, и условия этих миссий были одними из самых тяжелых, с которыми сталкивались моряки антигитлеровской коалиции. Помимо немецких подводных лодок и авиации, они столкнулись с экстремальным холодом, штормами и льдом.
Уровень потерь судов в арктических конвоях был выше, чем на любом другом маршруте союзников. За всю кампанию арктических конвоев из-за немецких подводных лодок и авиации 🩸погибло более 3 тысяч человек.
Арктические конвои доказали, что союзники намерены помогать Советскому Союзу 👊 сопротивляться, тем самым временем готовясь к открытию Западного фронта в Европе.
Сегодня, как и каждый год, мы отдаем дань 🙏 уважения всем храбрым военнослужащим, которые участвовали в Арктических конвоях и отдали свои жизни.
#VEDay80#VE80#ArcticConvoys#VJDay#theUK
🪖Чествуем век мужества: ветерану Арктических конвоев Эрни Дэвису сегодня исполняется 100 лет 🪖
Сегодня мы отмечаем особую веху — 100-летний юбилей героя Арктических конвоев Эрни Дэвиса.
В ходе трогательной церемонии г-ну Дэвису была вручена бутылка рома Pusser’s представителями отдела по вопросам обороны Великобритании, медали гордо сияли на его груди. Oн — живое свидетельство исторической миссии Конвоев, объединившей наши народы.
Будучи добровольцем, вступившим в Королевский военно-морской флот в 1943 году, Эрни служил на фрегате HMS Cotton во время последних двух Арктических конвоев 1945 года.
За своe мужество Эрни получил британские награды «Звезда 1939-1945», «Атлантическая звезда», «Французская и германская звезда», «Арктическая звезда», а также был награжден медалью Ушакова (Россия).
После войны этот необыкновенный человек вернулся к гражданской жизни, проработав много лет инструктором по вождению — продолжая указывать путь другим в мирное время.
🫡 Отдаем честь ветерану Эрни Дэвису! 🫡
#АрктическиеКонвои#ArcticConvoys#VEDay80#ПомнимВместе#RememberTogether
🎂 18 марта ветерану арктических конвоев #WW2 Эрни Дэвису исполнился 101 год, и мы очень рады, что Минобороны передало ему личное поздравление от посла Найджела Кейси.
В 1943 году Эрни добровольно вступил в Королевский флот Великобритании и служил на корабле HMS Cotton, участвуя в арктических конвоях — одном из самых опасных маршрутов войны.
Через ледяные моря союзники доставляли в советские порты продовольствие и технику, от которых зависела победа в Европе.
В день «Д» он патрулировал Ла-Манш, защищая войска союзников от немецких подводных лодок. Важно помнить такие истории.
С днём рождения, Эрни! И спасибо.
#ArcticConvoys#UKRussia#VEDay81#VE81
⚡Когда море становится полем битвы: HMS Trinidad и конвой PQ13⚡
#OTD 30 марта 1942 года, после жестокой битвы в ледяных водах Арктики, поврежденный британский
крейсер HMS Trinidad вошел в Кольский залив. Это был кульминационный момент одной из самых драматических историй Арктических конвоев.
Конвой PQ13, отправившийся в Мурманск с критически
важными грузами для СССР, столкнулся со всеми ужасами арктической войны — сначала страшный шторм разбросал корабли, затем последовали атаки немецких подводных лодок и авиации.
В разгар боя HMS Trinidad выпустил торпеду по немецкому эсминцу, но арктический холод привел к трагедии: торпеда сделала круг и поразила сам британский корабль. Несмотря на пробоину и гибель 32 моряков, экипаж продолжал сражаться.
Несмотря на все испытания, большинство судов конвоя PQ13 достигло цели, доставив танки, самолеты и другие грузы для Советского Союза. Моряки знали, что каждый успешно доставленный конвой — это тысячи спасенных жизней на Восточном фронте.
За годы войны через Арктические конвои в СССР было доставлено более 4 миллионов тонн грузов, включая 7,000 самолетов, 5,000 танков, тысячи грузовиков, сотни тысяч тонн топлива и продовольствия. Этот поток помощи составил около четверти всей поддержки, оказанной Советскому Союзу союзниками.
Путь через Северную Атлантику Черчилль назвал «самым страшным путешествием в мире». Температура опускалась до -60°C, волны высотой с пятиэтажный дом обрушивались на корабли, лед сковывал палубы, а немецкие самолеты и подводные лодки атаковали практически непрерывно.
Сегодня, вспоминая подвиг экипажа HMS Trinidad и других моряков Арктических конвоев, мы отдаем дань уважения этим отважным морякам. История PQ13 – только одна из многих героических историй, а за каждой из них – люди, которые сделали невозможное возможным.
#ArcticConvoys#PQ13#АрктическиеКонвои#VE80#VEDay80#WW2
Фото: HMS Trinidad покидает Хвальфьордюр (Исландия), отправляясь в опасное путешествие, картина Гордона Фрикерса «Холодная ярость»