Что делать если нужно поставить какую-то 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
#Germany
🦇 A €200 million railway section in Germany is stalled because of bats
In Baden-Württemberg, residents of the Calw district are waiting for train traffic to resume on a railway section and tunnel whose repair took decades and cost over €200 million. But there is one insurmountable obstacle — more than 1,000 bats living in the tunnel between Calw and Weil der Stadt stations.
These animals are under strict protection, so they cannot be removed. An unusual solution was found — to build a protective concrete wall inside the tunnel. On one side, trains will run; on the other, the bats can sleep undisturbed.
This will require 300 concrete blocks and about €80 million. Additionally, ultrasonic sensors will be installed to help the bats navigate their new shelter. However, it is still unknown how quickly they will adapt to the new structure, and this will determine when the tunnel can reopen.
⚠️ This is not an isolated case: in Kiel, 900 bats prevented the demolition of an old swimming pool because the animals refused to move to new shelters.
🦇 Sometimes even very small creatures can have a big impact on massive infrastructure projects!
☘️Read the latest environmental news on the @ekologuz page. Follow us and send your suggestions and wishes via @eklguz_bot
Instagram | Facebook | Twitter | Sayt | Youtube.
🇩🇪#Germany: Men in Germany aged 17 to 45 are required to obtain approval from the Bundeswehr (German armed forces) career center before leaving the country for more than three months, whether for study, work, or travel.
The provision was included in a broader military reform package approved in December, but went largely unnoticed until it was reported by the German outlet Frankfurter Rundschau. The measure received little public attention at the time and was not widely discussed.
Despite the law being in place, it remains unclear how this requirement will be implemented in practice, particularly for individuals who were unaware of it or who have already left the country.
"We cannot remain silent. No-one can remain silent when there is an ongoing genocide and when people are denied the most basic human needs ... To stand with Palestine is to be human."
Greta Thunberg calls out Israel's genocide during a speech in Leipzig, #Germany.
https://t.me/YediotNewsChat
Heidelberg, #Germany🇩🇪
Heidelberg was not affected by the bombing of the Second World War, so it was preserved in its original medieval form - a castle, numerous churches and abbey, ancient streets.
Nuremberg, #Germany🇩🇪
Every year in Nuremberg, the largest Christmas fair is held throughout Europe.
Nuremberg is the city of inventors. It was he who gave the world things such as pocket watches, a globe, a compass, a pelting and a current machine.
🇩🇪#Germany: A knife attack took place during an anti-Iranian regime protest in Hamburg.
A man went on a stabbing spree targeting protesters, reportedly deliberately targeting anti-regime demonstrators. He managed to stab two protesters. One victim is in serious condition in hospital, while the second received medical aid at the scene after being stabbed in the leg.
(via @froopashee2)
Repost via @ben_ditto on IG
🇩🇪#Germany: Cockroach swarm agents 🪳
Swarm Biotactics, a deep tech start-up based in Kassel, Germany, specialising in “bio-robotics”: putting miniature sensor backpacks on cockroaches and then sending these as swarms into environments inaccessible for conventional robots, drones, or humans such as collapsed structures following natural disasters, GPS-denied areas, or contested warfare zones. The swarm of roaches act as real-time data agents 🪳 The company has received €13 million in funding so far from a consortium of international investors, including Vertex Ventures US, Possible Ventures, and Capnamic 🪳
Footage of cockroaches taken from 60 Minutes on CBS.