Что делать если нужно поставить какую-то 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
🆕Appointments here!
We glad to present you a 1st version of Appointment system. This journey was challenging, interesting and took 4 months. We faced complex challenges where we had to create a new approach.
🌐 Now you can discover all kind of businesses in one mini app with convenient map. Your country, your service, your time!
🛍 We know that our users want to provide their customers with only the best service that will work 24/7 without interruption. All on one page and app. Provide services and book services from others. The era of Telegram appointments is now open!
And don't forget, almost all new businesses will be available for viewing and researching by thousands of Callegram users. Don't miss the opportunity to be the first to create a business!
App | #Callegram#MiniApps#Appointments
🔜 We're at the finish line!
This is what the booking process will look like from the client's side. Choose the time, master and service that is convenient for YOU 👍
App | #Callegram#MiniApps#Appointments
✏️Find a Cool Service Directly in @CallegramBot? Why Not?
We’re almost here with a new huge update — Appointments.
Our users will be trying to find an awesome services directly in the mini app.
We’re doing our best!
App | #Callegram#MiniApps#Appointments
🚨AI Takes Your Job
And this is awesome! Today we’ve tried our first version of AI Appointments. And it works really great!
In the near future your clients will chat with you about services and AI will assist you with confirming appointments.
Different languages, text and voice messages. No more annoying work!
Be ready for the feature right now. Create your business
🔗t.me/CallegramBot/subscribe_business
App | #Callegram#MiniApps#AI#Appointments
🔜Appointments In Callegram
This is a big part of our service and we want to share with you a first sneak peak.
⚠️ This feature is not available now. Check our news below.
Users. You will get an option to make an appointment directly in Telegram for your favorite services. You don’t need to make a call or visit the service location. Just few clicks and you will get what you want + reminders about upcoming service.
Businesses. Setup your businesses, locations, specialists, their schedules and services. Automate your handwork and launch your services in Telegram within a few minutes.
Marketplaces. If you want to use our Callegram system in your flow and give your merchants opportunity to create an appointment schedule, please contact @krimon
👀 Stay tuned and check the news in our channel
#MiniApps#Telegram#Business#Appointments
🤫Page Of Businesses
Users, are you ready to make appointments in a few clicks?
Businesses, are you ready to provide your services seamlessly?
🙂 Stay tuned
#Appointments#MiniApps#Business#CallegramBusiness
⚙️We've automated everything for you
Now your business' schedule is sent automatically if the person writes the words ‘Book’, ‘Appointment’
To activate the function:
1) Create a business with services;
2) Pay subscription;
3) Add @CallegramBot in Telegram settings in "Telegram Business - ChatBots".
Now your customers will get a specific message with option to make an appointment.
Don't waste time on routine, get down to business. Callegram optimises your work 💰
App | #Callegram#MiniApps#Appointments#TelegramBusiness