Что делать если нужно поставить какую-то 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
Apple宣布首席运营官职位交接
Apple 今日 宣布 ,首席运营官 Jeff Williams 将于本月晚些时候正式交接其职责,由现任运营高级副总裁 Sabih Khan 接任。这是公司早已规划好的继任安排。Jeff Williams 仍将继续向 Apple CEO Tim Cook 汇报工作,负责领导 Apple 的顶级设计团队以及 Apple Watch 和健康相关项目。在 Williams 计划于今年晚些时候退休后,Apple 的设计团队将直接向 Tim Cook 汇报。
在 Apple 任职期间,Jeff Williams 建立并完善了全球供应链,支持了 Apple 在全球范围内的业务拓展,包括美国、中国、印度、日本及整个东南亚地区。他还主导了供应商责任工作,为全球员工提供培训和教育项目,提高行业标准。Williams 是 iPod 和 iPhone 项目的关键推动者。他十多年前着手推动 Apple Watch 的开发,并构建了 Apple 的健康战略,帮助用户过上更健康的生活,更好地了解自身健康并获得关键的医疗支持。近年来,他还一直领导 Apple 的顶级设计团队。
#AppleNewsroom
📮 频道 @AppPie
隆重推出 Apple Sports,一款专为体育迷打造的新应用
🔗Apple Newsroom
Apple 今天推出了 Apple Sports,这是一款适用于 iPhone 的免费应用程序,它为体育迷们提供实时比分、统计数据等信息。该应用以速度和简便性为设计宗旨,为用户提供了个性化体验,将他们最喜爱的联赛和球队放在了显著位置,且拥有 Apple 设计的易用界面。Apple Sports 现在已经可以在美国、英国和加拿大的 App Store 中下载。
#AppleNewsroom
📮 频道 @AppPie
Apple 在 iPhone 15 Pro 上推出拍摄空间视频的功能
🔗Apple Newsroom (中国大陆)
更新至 iOS 17.2 后,iPhone 15 Pro 和 iPhone 15 Pro Max 用户现在即可开始录制空间视频——利用这项开创性的全新功能捕捉生活中的宝贵时刻 —— 稍后在 Apple Vision Pro 上重温这些暖心回忆。
#AppleNewsroom
📮 频道 @AppPie
Mac 与 iPad 版 Final Cut Pro 迎来重大升级
🔗Apple Newsroom (中国大陆)
Apple 今日宣布对 Mac 与 iPad 版 Final Cut Pro 进行升级,带来简化工作流的强大新功能。Final Cut Pro 改进时间线导览与归整体验,同时新增简化复杂编辑的新方式。这两个版本的 app 利用 Apple 芯片的强大能效表现,推出对象跟踪器的全新机器学习模型,搭载多个媒体处理引擎的 Mac 机型导出速度大幅提升。iPad 版 Final Cut Pro 推出新功能,进一步提升便携多点触控编辑体验,包括旁白录音功能、扩展的 app 内内容选项、新增调色预设与工作流提升等。上述 Final Cut Pro 更新将于本月晚些时候在 App Store 推出。
#AppleNewsroom
📮 频道 @AppPie