Что делать если нужно поставить какую-то 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
Review of Glutinous Rice Ball Workshops and Tea Parties in Aberdeen & Glasgow
花崗岩城與格拉斯哥湯圓製作工作坊及茶聚 回顧
#花崗岩城#Aberdeen 與 #格拉斯哥#Glasgow 湯圓製作工作坊及茶敘,旨在讓參加者有機會了解香港的冬季節日文化,以及自製糯米 湯圓。這是Mission Perm計劃在 Aberdeen舉辦的首次面對面活動⋯⋯使新到埗港人有更多社群參與,讓他們進一步融入社區。兩場活動都有多位蘇格蘭本地非華裔人士參與,活動讓他們了解香港節慶文化。促進香港人和蘇格蘭人之間的文化互動⋯⋯
⋯⋯以上應該係我哋2023年最後嘅實體活動。祝大家冬至平安、#聖誕快樂 同 #新年快樂!
Glutinous Rice Ball Workshops and Tea Parties in Aberdeen & Glasgow, which aimed to offer participants a chance to learn about the Winter festival culture of Hong Kong, and homemade glutinous rice ball. This is the first in-person activity occurring in Aberdeen. In both sessions, there were several native Scots to join and learn about Hong Kong Festival Culture. It enhanced the cultural diversity and interaction between Hongkongers and Scots.
These should be our last physical activities in 2023. We wish you all a safe winter solstice, a merry Christmas and a happy New Year!
閱讀報告全文,
請訂閱Patreon,同時請支持我哋日常運作!
https://www.patreon.com/posts/94874815
Thanks to the Govan & Linthouse Parish Church for co-organising this event.
特別鳴謝Govan & Linthouse Parish Church協辦是次活動。
假如身在蘇格蘭嘅你錯過咗 呢次活動,請唔使失望,我哋喺1月、2月分別有香港開埠紀念同農曆新年節慶活動!歡迎留言或者inbox同我哋講你所在嘅城市,讓我哋更能夠掌握大家參與活動嘅意向!
—
單次捐款支持我哋
https://thehongkongscots.sumupstore.com
喺蘇格蘭,有嘢要搵我哋幫手?即填:
https://forms.gle/n8cSUkW2HS19BRVg7
想同我哋並肩作戰,參與我哋日常運作?
Get Involved!
https://forms.gle/HCvXDXrpUMa2TtwB9