Что делать если нужно поставить какую-то 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
#TalkOfTheTown: Driving innovation and sustainability is Singapore’s first “car-free” town 🚘.
The upcoming Tengah Town Centre will have roads running below ground level, freeing up space above ground for amenities. Without roads, residents will also be able to cycle and walk freely.
This increased in convenience and connectivity decreases residents’ need for cars — lowering their carbon footprint. That’s a win-win situation for all.
What other exciting things are happening in Singapore? Find out in the next part of the series.
#MNDTalkOfTheTown: Let’s plan the future of Singapore together with the Draft Master Plan 2025 (DMP 2025) 🗺️
All Singaporeans are welcomed to share their thoughts and ideas for the DMP 2025, co-creating Singapore’s land use plans for the next 10-15 years based on 4 key themes:
⭐️ Shaping a Happy Healthy City
⭐️ Enabling Sustainable Growth
⭐️ Strengthening Urban Resilience
⭐️ Stewarding Our Nature and Heritage
More exciting updates will be coming your way. Stay tuned to #TalkofTheTown for updates!
#MNDTalkOfTheTown: HDB has adopted precast technology for improved productivity and quality 🏗️ With precast technology, building components can be manufactured off-site before being delivered and assembled on-site.
The precast components include:
- Household Shelters
- Staircases
- Walls
- Refuse Chute
- Air-Con Ledge
Stay tuned for the next part of our series where we introduce Singapore’s land-use plans for the future. #TalkOfTheTown
#MNDTalkOfTheTown: Introducing the BudgetMealGoWhere platform, where you can find cheap and good meals in Singapore 😋
Here’s how you can find your favourite meals on a budget:
- Enter a postal code on https://gowhere.gov.sg/budgetmeal/ to find your nearest coffeeshop
- Look out for stalls with the Budget Meal sticker
Keep a lookout for the next part of our series to find out how we’re improving productivity at construction sites. #TalkOfTheTown
#MNDTalkOfTheTown: Playgrounds have come a long way since the 1960s.
Here are some fun facts about these fun spaces:
💪 Playgrounds today are designed to help develop children’s motor skills, like climbing and balancing.
🌈 They are also themed to encourage children to stretch their imaginations and play pretend.
👨👩👧👦 Many are intentionally placed near fitness corners to allow families to come together and bond.
📖 Some of the thematic playgrounds even reflect the history and heritage of the towns.
Even more exciting developments are unfolding in your neighbourhoods. Stay tuned to #TalkofTheTown for updates!
#MNDTalkOfTheTown: In the second part of our series, we learn more about the developing🏗️ Jurong Lake District (JLD).
JLD’s infrastructure is designed with sustainability in mind. Some of the green initiatives are:
☀️Solar panels on all suitable surfaces.
💨District Cooling System to cool down buildings and the streets more effectively.
🚘EV charging points placed throughout the district.
Keep a lookout for the next part of the series as we talk about the evolution of our playgrounds. #TalkOfTheTown
#MNDTalkOfTheTown: Let’s explore how technology has transformed the management of our trees! 🌳
With the help of Light Detection and Ranging (LiDAR) technology and advanced modelling tools like the Tree Structural Model (TSM), we can now accurately assess which trees need our attention – keeping our parks and neighbourhoods a safer place for all.
Stay tuned to this series for more about how tech and innovation has transformed the way we work, play and live! #TalkOfTheTown
Атака титанов или атака финалов... Не будем вдаваться в подробности, но после выхода часового спешла ясно одно – надо сесть пересматривать прошлые сезоны и учиться добавлять такие же отметины на лице (no spoilers area) 💅
Давай по порядку:
➡️ Набери на тонкую (лучше скошенную) кисточку матовой бордово-красной помады – у нас это или 006 оттенок #talkofthetown, или 004 #checkmatte
➡️ Наметь контуры отметин под и над глазами (например, как у Имир). Это будет подложка для теней
➡️ Возьми коричневый карандаш (002 оттенок) и вот как раз им начинай добавлять цвет у основания, растушевывая вниз (или вверх, смотря где начало) пушистой кистью
➡️ Пройдись тёмно-красными тенями от основания до конца
➡️ Набери на очень тонкую кисть коричные тени и дорисуй контуры сверху основания отметины, чтобы добавить глубины
➡️ Если что-то пошло не так – подкорректируй края консилеров или тоном, набрав их на тонкую кисточку. Всё-таки это место «отрыва», оно должно быть чётким
➡️ Остатками продукта с этой кисти сделай несколько параллельных друг другу линий от середины каждой отметины, чтобы сделать их более похожими на остатки мышечных волокон (а ведь это они и есть!)
Всё!
А чтобы следовать инструкции было проще мы сделали видео-туториал – ищи его по ссылке
😉
#sodalovesanime
#MNDTalkOfTheTown: Let’s find out how Project ADORE has helped more dogs to find their forever homes ❤️
Under Project ADORE, led by NParks, HDB flat owners can adopt local mixed-breed dogs of up to 55 cm in height, with proper safeguards in place. The project has even been expanded to allow for the rehoming of retired sniffer dogs too! 🐶
#TalkOfTheTown#projectADORE
Итак 👻
Перевоплотиться в Бастинду на Хэллоуин тебе помогут:
💚 Палетка теней Under the sea #exploretheocean
💚 Тени для век Unicorn squad #unicornluv 001
💚 Палетка теней Galaxy cake #sugarbabe 001 pink cake
💚 Сатиновая помада в стике #talkofthetown в оттенке 001 Mint tea
💚 Карандаш для глаз #eyeloveunicorns в оттенке 007 Forest Queen
💚 Подводка-маркер для глаз #makeitpop в оттенке 106 Rainforest
#sodalovespopculture#sodainspiration
It’s a cruel summer… with you🩷
Мы уже подобрали продукты к первым пяти эрам Тейлор здесь и здесь, а сегодня разберем оставшиеся пять! Итак, эры Тейлор (SODA's Version) 🌸
Reputation 🐍
Are you ready for it? Дерзкая, мне-все-равно-что-вы-обо-мне-думаете эра! Продукты эры: сатиновая помада в стике #talkofthetown в темном оттенке 005 Sweet cherry 🍒, жидкие тени #eyeloveyou в смелом оттенке getaway car 002 Fairy glow и много-много сияния с глиттером #bizarreshine и лаком для ногтей #starryglow 006 Aurora ⭐ А завершить образ можно черными сережками-молниями #sugargem⚡
Lover 💕
Самая милая, счастливая и влюбленная эра Тей — и все мы мечтаем однажды в ней оказаться 😭 Цвета соответствуют: пастельные, яркие, сияющие ✨ Продукты эры: палетка с критическим содержанием шиммера Galaxy cake 002 Blue cake, розовый глиттер #bizarreshine, розовый штампик-сердечко #makeitpop и те самые духи-кошка с их сладким ароматом и блестками 🐾 Аксессуары тоже кричат о любви — серьги heart in fire pink и набор колец pink 💘
#sodalovespopculture#sodalovestaylorswift