Что делать если нужно поставить какую-то 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
Каменный обелиск напротив красивой церкви в бывшем индустриальном районе Берлина. Можно пройти мимо или обратить внимание на его интересную форму и потрепанный вид. Возможно у него за спиной непростая история.
Изначально, в 1931 году, это был мемориал, посвященный местными жителям, погибшим в Первую Мировую войну.
С каждой стороны памятника были фигуры людей, изображающих разные оттенки войны: рана, забота, защита и горе.
В 1942 году эти бронзовые фигуры были переплавлены уже в нуждах другой великой войны (был сильный ресурсный голод).
После финала другой войны этот памятник, потеряв все его детали, стал обычной серой глыбой.
Но лично для меня открытием стало то, что в 1949 году на него добавили текст: «Dem geschändeten Menschen».
Что означало: «Народу поруганному».
Спустя год надпись удалили из-за угроз местного руководства, оно пригрозило снести памятник. Осталось лишь напоминание в виде двух букв Е.
#de
Район Ной-Венедиг или по-русски Новая Венеция. Дачный поселок на востоке Берлина, названный так из-за каналов, которые разрезают местность на аккуратные лоскуты.
Изначально болотистое место хотели осушить, но в итоге построили каналы. Интересно, что людям не сразу пришло в голову называть это место Венецией и называли его Новый Камерун! Наверное, в память о бывшей немецкой колонии в Африке.
В ГДР это место было статусным, здесь располагались дачи восточно-германской номенклатуры. На информационном сайте нашел самое немецкое описание жизни этого дачного поселка в тот период:
С 1961 года привилегированные граждане ГДР сдавали в аренду имущество жителей Западного Берлина. Позже участки были возвращены законным владельцам.
Интересное место, правда гуляли там только мы, остальные были либо на лодках, либо на велосипедах.
#de
Берлин - город, конечно, интересный. Можно идти вдоль диких зарослей с гаражами в полной тишине, выйти к бывшей рыбацкой деревне, где в одной точке схлестываются люди на лошадях, старых мерседесах, велосипедисты и просто прогуливающиеся. На все это удивленно глядит маленький Ваня, смотрит на то, как этот город живет везде и сразу.
#de
Мемориал на окраине Берлина.
Рансдорф - бывшая немецкая деревня, ставшая чуть больше ста лет частью города. Место на вид добротная немецкая провинция, кровля крыш, элементы на домах, большие сады, низкие ограды. Пейзаж холмистый и песчаный, узнается, что в прошлом здесь были дюны. На одной из них стоит один из самых красивых военных памятников Берлина, который был построен непосредственно местными немцами, а не победителями.
Памятник построен в 1927 году. Не был военным мемориалом, а являлся памятником не вернувшимся с Первой Мировой войны землякам. Человека на памятнике отсылает к местной популярной мифологии о рыцаре Роланде, который обычно гордо держит “меч справедливости”. Здесь же это рыцарь в каске, который опустив меч серьезно глядит в даль. Была памятная доска с именами погибших солдат, в 1939 на нее добавили нацистского орла и памятник на мой взгляд превратился в образ реванша.
Сейчас мемориал жертвам фашизма и войны.
#de
Район города, в котором я что-то чувствую, потому что эти места теперь связаны с моей историей знакомства с городом, когда я год назад катался по серому весеннему Берлину без какой-либо цели. Безжизненное место с трассой и проезжающими ярко-желтыми трамваями.
Клингенбергская тепловая электростанция – название и ее историю я узнал уже после, а при первой встрече просто шатался вокруг и удивлялся такому огромному индустриальному гиганту в центре города. Построена в 1929 году, выглядит изящно, но трубы душили Берлин чёрным дымом (из-за угля). В 1945 году не успели подорвать, и коммуникации вывезли в страну-победительницу. Недавно станция перешла на газ.
Рядом с ТЭЦ находится старый жилой комплекс, который выглядит как пряничный ганзейский домик. Построен в 1925 году, это были дома для работников бывшего газового завода. Выглядит он посреди этой пустоты странно; в итоге оказалось, что в нем никто не живёт, а внутри располагаются разные творческие студии, мастерские и коворкинг. Ну что, на завод? #de
В странах западного-христианского мира происходит предрождественская суматоха.
По городу носятся замученные доставщики, заваленные коробками, люди, пытающиеся посетить все действующие в городе рождественские ярмарки; родители развешивают на колясках гирлянды. Через неделю все это резко прекратится, город опустеет и замрет в тишине.
А ещё в каждом магазине и даже палатке начали разливать глинтвейн из термосов и бочек, можно просто идти по улице и пробовать по стаканчику через каждый метр, правда далеко потом не уйдешь. Самый лучший обнаружил около дома в небольшом вечернем магазине - там его разливают прямо из самовара. #de
Был еще такой случай в Германии. Ехал я всё утро на велосипеде, часто останавливался и фотографировал. Навигатор приводил на закрытые участки дороги, и приходилось ехать через какие-то дикие поля.
Добрался уже без сил до города и увидел, что он пуст. По нему лишь медленно едет большой мусоровоз и тормозит буквально у каждого дома. Рядом с машиной бегают туда-сюда два работника и собирают желтые пакеты, лежащие у дверей домов.
Обогнав их, я поехал сквозь весь город, и он был полностью усыпан одинаковыми желтыми пакетами с мусором, которые медленно собирали эти трудяги.
Было очень странное некомфортное чувство посреди яркого дня. Весь город усеянный одинаковыми полупрозрачными желтыми пакетами, и ни души вокруг, только мусоровоз неспешно подчищает последние признаки присутствия людей в этом месте.
Это был район Фюрстенберг города Айзенхюттенштадт. #de
Поездка на велосипеде:
1. Кукурузные поля с ветряками на горизонте.
2-3. Церкви, которые встретил на пути (их было много).
4. Пожилая женщина фотографирует пейзажи и убирает фотоаппарат в сумку.
5-6. Мемориал советским солдатам.
7. Старая надпись "Cigarren."
8. Бывший видео салон.
9. Настенный социалистический мурал (можно увидеть провода, потому что в городе Эберсвальде есть троллейбус!). #de
Эберсвальде.
Заброшенная бумажная фабрика и недействующая электростанция. Город расположен вдоль небольшого, но длинного канала. Пару сотен лет назад Берлин был очень грязным городом (сейчас, кстати, тоже хаха), поэтому производство, где требовалась чистая вода, создавалось подальше от столицы. Здесь появилась бумажная фабрика, а позже тут построили первый будущий прообраз многих электростанций Германии.
Судьба Восточной Германии была такова: перед приходом Красной армии предварительно союзники всё массово разбомбили. После того, что уцелело, советские солдаты разобрали и увезли в качестве репарации.
Но этим двум сооружениям повезло: они продолжили работать и стали уже частью промышленности ГДР.
Бумажная фабрика закрылась спустя пару лет после объединения Германии, электростанция тоже, и частично обрушилась. Пережив две войны и социализм, производство с многовековой историей закрылось, не найдя себе места в новом мире. #de
Здание Государственного совета ГДР.
Построенное в 1960-е годы здание сохранили с минимальными изменениями. Гуляя по коридорам, возникало чувство, будто руководство ГДР исчезло отсюда совсем недавно. Рядом с лестницей, на все три этажа, изображена мозаика, показывающая историю социалистической Германии.
Экскурсия была на немецком, поэтому я мало понял. Одна из пожилых женщин приехала на велосипеде в спортивной одежде, тут же в фойе переоделась при нас в классическую одежду и словно инспектор ходила, задавая экскурсоводу вопросы. Вела себя как дома. На одном этаже мы увидели какие-то странные люстры, мужчина сказал - Наверное, те, кто жили в ГДР, помнят эти странные лампы в государственных бюро? Часть группы одобрительно посмеялась, а эта пожилая дама добавила - Но здесь же еще были вазы?
Похоже, у женщины было общее прошлое с этим зданием.
Еще гид рассказал, что здесь снимался клип группы Rammstein - Ich Will и вся женская часть группы раздраженно закатила глаза. #de