Что делать если нужно поставить какую-то 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
#GSTRateChange Consumers who come across cases of unjustified price increases of essential goods or services that use the GST increase as a cover can provide their feedback to the Committee Against Profiteering (CAP) at www.cap.gov.sg/shareyourfeedback. All feedback submitted will be reviewed by CAP, and further investigated if necessary, to identify businesses that may have engaged in unjustified price increases on the pretext of the GST increase.
For more information, please visit CAP’s website.
#GSTRateChange Only GST-registered businesses can charge GST from their effective date of GST registration. You can check if a business is GST-registered at https://go.gov.sg/gst-registered-business-search.
Non-GST registered businesses are not allowed to charge GST.
#GSTRateChange Do you know how much GST will be charged, for transactions that span the rate change? It all depends on when the invoice is issued, whether payment is made and if the goods/services have been delivered/performed. Read on for some scenarios you might find yourself in!
👉🏼More info on the transitional rules for the rate change
#GSTRateChange From 1 Jan 2024, you should see price displays from GST-registered businesses, with GST charged at 9%. Prices that are quoted, whether written or verbal, should be GST-inclusive so that you know the final price pay upfront.
👉🏼 Click here for more info on price displays
#GSTRateChange With the second step of the GST rate change approaching, IRAS reminds all businesses to ensure that their systems are ready to incorporate the new 9% GST rate with effect from 1 Jan 2024 and to take active steps to avoid rate change errors during implementation.
👉🏼Click here for more on getting your business ready for the second rate change and common rate change errors to avoid
#GSTRateChange Businesses are strongly encouraged to start preparation early for a smooth transition to the GST rate of 9% on 1 Jan 2024. Here are 3 main things for businesses to do, ahead of the second GST rate change.
👉🏼Click here for more information on preparing for the rate change
#GSTRateChange PSA: Only GST-registered businesses can charge GST from their effective date of GST registration. You can check if a business is GST-registered at https://go.gov.sg/gst-registered-business-search.
Non-GST registered businesses are not allowed to charge GST.
#GSTRateChange Do you know how much GST will be charged, for transactions that span the rate change? It all depends on when the invoice is issued, whether payment is made and if the goods/services have been delivered/performed. Read on for some scenarios you might find yourself in!
👉🏼Click here for more info on the transitional rules for the rate change
#GSTRateChange Heading to the 24-hour store to grab some post-NYE party essentials in the wee hours of 1 Jan 2024? #DidYouKnow that you may only be charged GST at 8% on your purchase, if it is the supplier’s normal accounting practice to treat sales made after midnight as sales of the preceding day!
👉🏼Click here for more info on the transitional rules for the rate change
#GSTRateChange Making a run to the 24-hour store in the wee hours of 1 Jan?#DidYouKnow you may only be charged GST at 7% on your purchase, if it is the supplier’s normal accounting practice to treat sales made after midnight as sales of the preceding day!
👉🏼 Click here for more info on the transitional rules for the rate change
Navigate the right GST rate to pay for transactions spanning the rate change with new mummy and her bestie! 💁♀️💡
A transaction is considered to span the GST rate change if one or two of the following events takes place wholly or partially on/after 1 Jan 2024:
- The issuance of invoice by supplier
- The receipt of payment by supplier
- The delivery of goods or performance of services
More info at go.gov.sg/irasgst-rc-consumers
#GST#GSTRateChange#skit#iras#irassg
🎵 We carry through, do what we need to do~ Yes, I’m a GST-registered business just like you 🎵
Here are 3 key things GST-registered businesses need to prepare for the 2024 GST rate change:
1) Update systems to incorporate 9% GST from 1 Jan 2024
2) Prepare price displays to reflect 9% GST from 1 Jan 2024
3) Understand transitional rules to apply the correct GST rate for transactions spanning 1 Jan 2024
Learn more at go.gov.sg/irasgst-rc-businesses
#GST#GSTRateChange#iamjustlikeyou#iras#irassg