Что делать если нужно поставить какую-то 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
🗼Новый символ Анкары - Atatürk Cumhuriyet Kulesi - откроется в годовщину Победы при Чанаккале
18 марта - в 109-ю годовщину Победыв битве приЧанаккале - для жителей и гостей столицы откроет свои двери «Башня Республики Ататюрка», которая ознаменует собой 100-летие Турецкой Республики
Фундамент 197-метровой башни был заложен в столичном муниципалитете Кечиёрен (Keçiören) еще в 2003 г., однако строительство на некоторое время было приостановлено. Теперь работы завершены, и башню планируется открыть в понедельник, 18 марта, с участием президента Эрдогана.
В здании башни разместятся художественная галерея, где планируется проводить международные выставки, библиотека, тренажерный зал, торговый центр, на высоте 190 м. зал свадебных церемоний, на высоте 140 м. - космическая терраса и научный центр, а также кафе и вращающийся ресторан.
Башня, спроектированная архитектором Атакуле Рагыпом Булучем (Ragıp Buluç), имеет сейсмоустойчивую конструкцию. Увенчанная на вершине «Звездой Сельджуков» - общим наследием турецкой культуры, - в вечерние часы она будет освещаться системой светодиодных экранов.
Башня Республики Ататюрка должна стать новым символом столицы, с вершины которой посетители получат возможность наблюдать за мегаполисом с высоты птичьего полета ☸️
📍 Ankara #Ankara
Turkuaz / Турецкий цвет
Видео: HaberTurk
#Turchia: le operazioni della polizia si diffondono anche nel municipio di #Ankara; con l'accusa di corruzione, in merito ai concerti organizzati 4 anni fa, oggi sono finite in manette 13 persone.
#Turchia: una nuova ondata di vittime dell'alcol di produzione clandestina, a #Ankara sono 33 le persone morte e 20 sono in terapia all'ospedale, in pochi giorni.
#Turkey deploys F-16 jets in #Somalia
Turkey has deployed F-16 fighter jets to Somalia, officials told AFP on Thursday, as #Ankara seeks to expand its military footprint in the Horn of Africa.
Ankara is a key ally of Somalia, providing extensive military and economic support to the country, which has been ravaged by civil war since the early 1990s.
"Turkey has deployed F-16 jets in Somalia," a government official told AFP, without giving further details. A second official, also speaking on condition of anonymity, said the aircraft would be operated by the Turkish contingent stationed in Somalia.
"This is for our own security," the source said, stressing that the jets would not be flown by Somali personnel. Turkey opened its largest overseas military base in the Somali capital Mogadishu in 2017.
Ankara maintains a task force and an air component command there "to contribute to ....
https://web.facebook.com/AddisstandardEng/posts/pfbid032KptiLG37NfJxJbwbCJx3WCHVdMJaKhytXTrgYP3tyZF5EPKCnXVib7TjwimxGdpl
Turkish President Recep Tayyip Erdoğan said that Turkey would never want to see new conflict in the Horn of Africa, emphasizing the need for stability and encouraging countries in the region to address challenges through cooperation and dialogue.
Erdoğan emphasized respect for sovereignty and territorial integrity, cautioning against external geopolitical competition in the Horn. He reiterated #Ankara’s position that potential recognition of #Somaliland by #Israel would not contribute positively to regional stability.
He also welcomed diplomatic engagement between #Ethiopia and #Somalia, noting Turkey’s mediation efforts aimed at easing tensions.
https://addisstandard.com/?p=55223
#Iran – Esmail Baghaei, portavoce del Ministero degli Esteri:
"Confidiamo in una rapida conclusione dei negoziati con gli #USA per la rimozione delle sanzioni. Un ringraziamento particolare a #Ankara per il ruolo di mediazione."
Il dodicesimo anniversario della rivolta popolare di #Gezi, ieri sera, è stato commemorato anche a #Ankara/#Turchia. Il presidio si è concluso con l'intervento della polizia, 15 persone in detenzione provvisoria.
#USA: Due senatori presentano la proposta di sanzioni contro #Ankara/#Turchia da attivare nel caso di un rifiuto della tregua e di una zona demilitarizzata in #Rojava/#Siria.