Что делать если нужно поставить какую-то 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
#crDroid#diting
New Version 10/09/2024:
Gapped version
Download
Changelog:
Updated to version 10.8
Note:
Firmware is NOT included.
Credits:
Thanks to @TeamMEX_XDA for all his helps and providing dt
By@Mohammadnt96
#crDroid#diting
New Version 11/07/2024:
Gapped version
Download
Changelog:
crDroid v10.6
Updated to June security patch
Including MiuiCamera
Note:
Firmware is NOT included.
This is beta version.
Credits:
Thanks to @TeamMEX_XDA for all his helps and providing dt
By@Mohammadnt96
Follow@xiaomi_12tpro_updates
Join@xiaomi_12tpro_chat
#crDroid#diting
New Version 25/02/2024:
Gapped version
Download
Changelog:
crDroid v10.2
SMS fixed
Kernel Switched to HyperOS
Used HyperOS blobs
Notes:
Use latest skkk twrp (v8.6)
Credits:
Thanks to @TeamMEX_XDA for all his helps and providing dt
Discussion:
Xiaomi 12T Pro crDroid
#crDroid#diting
New Version 02/02/2024:
Gapped version
Download
Changelog:
crDroid v10.1
fod fixed for both touchscreens
miui camera included
Known Issues:
Opening photo in miui camera
Credits:
Thanks to @TeamMEX_XDA for all his helps and providing dt
Discussion:
Xiaomi 12T Pro crDroid
#crDroid#Unofficial#diting#A14
Crdroid 10.0 UNOFFICIAL | Android 14
Updated: 11-11-2023
▪️Download
▪️Support
Changelog:
• Initial A14 build with oss vendor
Notes:
Known Issues:
Auto brightness must be disabled. otherwise screen will not wake after lock
Fod on k50u does not work
Credits: Thanks to @TeamMEX_XDA for providing dt
By@Mohammadnt96
Follow@xiaomi_12tpro_updates
Join@xiaomi_12tpro_chat
CrDroid - Official | Android 14 | Nothing Phone (2)
📝 Details:
- Version: v10.6
- Status: #Official
- Device: #Pong
- Released: 30/07/24
⬇️ Download: ROM (Vanilla) | Gapps Package
📔 Instructions: Here
🎄 Device tree : Here
📝 Changelogs : Here
🆘 Support: TG | XDA
🏷 Tags: #AOSP#ROM#CrDroid#U
✍️ Note:
- Base firmware 2.6.0 is recommended
- Dirty flash possible from previous july build
- Report with logs if you found issues in the comment section below
🏆 Credits:
- Chandu Dyavanapelli for DT Base
- Hellboy for Meteoric kernel and Glyph changes
- Fabian for PA Glyph Implementation
👤 Maintainer: @Ghosutox
🔔 Updates: @NothingPhone2Updates
🐙 Chat: @NothingPhone2
CrDroid - Official | Android 14 | Nothing Phone (2)
📝 Details:
- Version: v10.2
- Status: #Official
- Device: #Pong
- Released: 08/02/24
⬇️ Download: ROM (Vanilla) | Gapps
📔 Instructions: Here
💬 Support Group: Here
🏛 XDA: Here
💰 Donate: PayPal | BuyMeACoffee
🏷 Tags: #AOSP#ROM#CrDroid#U
✨Changelogs:
- Initial official build
- Firmware removed
- Rebased on NOS 2.5.2
- Added Reverse Wireless Charging
- Switched to qcom telephony
- Added Glyphify (An alternative app to ParanoidGlyph I made, more to come in future updates)
⛔️ Known Issues:
- Issue with reception of SMS
Enabling and disabling SIM card from settings fix the issue until the next boot
✍️ Note:
- Base firmware 2.5.2 is recommended
- Report with logs if you found issues in the comment section below
🏆 Credits:
- Chandu_Dyavanapelli for DT bring up
- Hellboy017 for kernel
- Przekichane for DT & vendor fixes on A13 » A14
- Pong TG Dev & Testing Team
👤 Dev: @DylanAkp
🔔 Updates: @NothingPhone2Updates
🐙 Chat: @NothingPhone2
CrDroid - Unofficial | Android 14 | Nothing Phone (2)
📝 Details:
- Version : v10.x
- Status: #Unofficial
- Device : #Pong
- Released : 04/01/24
⬇️ Download : ROM (Vanilla) | Gapps
📔 Instructions: Here
📸 Screenshots : Here
💬 Support Group : Here
🏛 XDA : Here
💰 Donate : PayPal | BuyMeACoffee
🏷Tags : #AOSP#ROM#CrDroid#U
✨Changelogs:
- Rebased on NothingOS 2.5.1
- Fixed stutters
- Fixed Face Unlock
- More CrDroid settings implemented
- Updated to Android QPR1 (Security patch December 2023)
✍️ Note:
- Base firmware 2.5.1 is recommended
- Report with logs if you found issues in the comment section below
🏆 Credits:
- Chandu_Dyavanapelli for DT Bringup
- Hellboy017 for kernel
- Przekichane for DT and Vendor fixes on A13 » A14
- Pong TG Dev and Testing Team for all help
👤 Dev : @DylanAkp
🔔 Updates : @NothingPhone2Updates
🐙 Chat : @NothingPhone2
CrDroid - Unofficial | Android 14 | Nothing Phone (2)
📝 Details:
- Version : v10.x
- Status: #Unofficial
- Device : #Pong
- Released : 18/12/23
⬇️ Download : Rom (Vanilla) | Gapps
📔 Instructions: Here
📸 Screenshots : Here
🏛 XDA : Here
💰 Donate : PayPal
🏷Tags : #AOSP#ROM#CrDroid#U
✨Changelogs:
- Intitial A14 build based
✍️ Note:
- Please be on NOS 2.0.4 before flashing. (Not yet tested from 2.5.1)
- Report with logs if you found issues in the comment section below
🏆 Credits:
- Chandu_Dyavanapelli for DT Bringup
- Hellboy017 for kernel
- Przekichane for DT and Vendor fixes on A13 » A14
- Snuvig for early tests
- Pong TG Dev and Testing Team for all help
👤 Dev : @DylanAkp
🔔 Updates : @NothingPhone2Updates
🐙 Chat : @NothingPhone2