Менеджер пакетов PIP. Гайд по использованию
PIP — это менеджер пакетов. Он позволяет устанавливать и управлять пакетами на Python.
Представьте себе ситуацию: вы собираете проект и подключаете множество сторонних библиотек для реализации своей задачи. Если это делать вручную, процесс выглядит примерно так:
- вы заходите на сайт, выбираете нужную версию пакета;
- скачиваете ее, разархивируете, перекидываете в папку проекта;
- подключаете, прописываете пути, тестируете.
Вполне вероятно, что эта версия библиотеки вообще не подходит, и весь процесс повторяется заново. А если таких библиотек 10? Устанавливать их вручную?
Менеджер пакетов PIP — решает данную проблему. Весь процесс установки пакета сводится к выполнению консольной команды pip install package-name . Несложно представить, сколько времени это экономит.
Если вы работали с другими языками программирования, концепция pip может показаться вам знакомой. Pip похож на npm (в Javascript), composer (в PHP) или gem (в Ruby).
Pip является стандартным менеджером пакетов в Python
Pip или pip3?
В зависимости от того, какая версия Python установлена в системе, может потребоваться использовать pip3 вместо pip.
Если вы не знаете какая версия Python установлена на вашей системе, выполните следующие команды:
- python —version — для Python 2.x
- python3 —version — для Python 3.x
- python3.8 —version — для Python 3.8.x
Советуем использовать версию Python 3.6 и выше
Если команда «python» не найдена, установите Python по инструкции из предыдущей статьи.
Далее нужно убедиться, что сам PIP установлен и работает корректно. Узнать это поможет команда:
Команда отобразит в консоли версию pip, путь до pip и версию python, для которой в дальнейшем будут устанавливаться пакеты:
pip 19.2.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
☝️ Важный момент : в зависимости от того, какую версию Python вы будете использовать, команда может выглядеть как pip , pip3 или pip3.8
Альтернативный вариант вызова pip:
python3.7 -m pip install package-name
Флаг -m сообщает Python-у запустить pip как исполняемый модуль.
Если pip не установлен
Pip поставляется вместе с Python, и доступен после его установки. Если по какой-то причине pip не установлен на вашей системе, установить его будет не сложно.
Windows
- Скачайте файл get-pip.py и сохраните у себя на компьютере.
- Откройте командную строку и перейдите в папку, в которой сохранен get-pip.py .
- В командной строке выполните команду: python get-pip.py или python3 get-pip.py .
- PIP установлен !
Linux (Ubuntu и Debian)
Прежде, чем перейти к непосредственному описанию, хотим отметить, что все команды, описанные ниже, используются от имени root пользователя. Если же вы являетесь обычным пользователем на компьютере, то потребуется использовать команду sudo , чтобы получить привилегии root.
Для Питона 2-й версии, выполните команду:
apt-get install python-pip
Для Питона 3-ей версии:
apt-get install python3-pip
MacOS
- скачайте файл get-pip.py командой curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py ;
- запустите скачанный файл командой: python get-pip.py или python3 get-pip.py .
Должна появиться запись Successfully Installed. Процесс закончен, можно приступать к работе с PIP на MacOS!
Как обновить PIP
Иногда, при установке очередного пакета, можно видеть сообщение о том, что доступна новая версия pip.
WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
А в следующей за ней строке
You should consider upgrading via the ‘python -m pip install —upgrade pip’ command.
указана команда для обновления pip:
python -m pip install —upgrade pip
Команды PIP
Синтаксис pip выглядит следующим образом: pip + команда + доп. опции
Со всеми командами pip можно ознакомиться, выполнив pip help . Информацию по конкретной команде выведет pip help .
Рассмотрим команды pip:
- pip install package-name — устанавливает последнюю версию пакета;
- pip install package-name==4.8.2 — устанавливает пакет версии 4.8.2;
- pip install package-name —upgrade — обновляет версию пакета;
- pip download — скачивает пакеты;
- pip uninstall — удаляет пакеты;
- pip freeze — выводит список установленных пакетов в необходимом формате ( обычно используется для записи в requirements.txt );
- pip list — выводит список установленных пакетов;
- pip list —outdated — выводит список устаревших пакетов;
- pip show — показывает информацию об установленном пакете;
- pip check — проверяет установленные пакеты на совместимость зависимостей;
- pip search — по введенному названию, ищет пакеты, опубликованные в PyPI;
- pip wheel — собирает wheel-архив по вашим требованиям и зависимостям;
- pip hash — вычисляет хеши архивов пакетов;
- pip completion — вспомогательная команда используется для завершения основной команды;
- pip help — помощь по командам.
Пример работы с пакетами
PIP позволяет устанавливать, обновлять и удалять пакеты на компьютере. Ниже попробуем разобраться с работой менеджера pip на примере парсинга названий свежих статей на сайте habr.com.
- установим нужные пакеты;
- импортируем пакет в свой скрипт;
- разберемся, что такое requirements.txt ;
- обновим/удалим установленные пакеты.
Шаг #1 Установка.
Для начала, нам необходимо установить beautifulsoup4 — библиотеку для парсинга информации с веб-сайтов.
pip3 install beautifulsoup4
pip найдет последнюю версию пакета в официальном репозитории pypi.org . После скачает его со всеми необходимыми зависимостями и установит в вашу систему. Если вам нужно установить определенную версию пакета, укажите её вручную:
pip3 install beautifulsoup4==4.8.2
Данная команда способна даже перезаписать текущую версию на ту, что вы укажите.
Также для работы beautifulsoup нам понадобится пакет lxml :
pip install lxml
☝️ Важный момент : по умолчанию pip устанавливает пакеты глобально. Это может привести к конфликтам между версиями пакетов. На практике, чтобы изолировать пакеты текущего проекта, создают виртуальное окружение (virtualenv).
Шаг #2 Импортирование в скрипте.
Для того чтобы воспользоваться функционалом установленного пакета, подключим его в наш скрипт, и напишем простой парсер:
from urllib.request import urlopen from bs4 import BeautifulSoup # скачиваем html page = urlopen(«https://habr.com/ru/top/») content = page.read() # сохраняем html в виде объекта BeautifulSoup soup = BeautifulSoup(content, «lxml») # Находим все теги «a» с классом «post__title_link» all_a_titles = soup.findAll(«a», < "class" : "post__title_link" >) # Проходим по каждому найденному тегу и выводим на экран название статьи for a_title in all_a_titles: print(a_title.text)
Шаг #3 requirements.txt.
Если вы просматривали какие-либо проекты Python на Github или где-либо еще, вы, вероятно, заметили файл под названием requirements.txt . Этот файл используется для указания того, какие пакеты необходимы для запуска проекта (в нашем случае beautifulsoup4 и lxml).
Файл requirements.txt создается командой:
pip freeze > requirements.txt
и выглядит следующим образом:
beautifulsoup4==4.8.2 lxml==4.4.2 soupsieve==1.9.5
Теперь ваш скрипт вместе с файлом requirements.txt можно сохранить в системе контроля версий (например git).
Для работы парсера в новом месте (например на компьютере другого разработчика или на удаленном сервере) необходимо затянуть файлы из системы контроля версий и выполнить команду:
pip install -r requirements.txt
Шаг #4 Обновление/удаление установленных пакетов.
Команда pip list —outdated выведет список всех устаревших пакетов. Обновить отдельно выбранный пакет поможет команда:
pip install package-name —upgrade
Однако бывают ситуации, когда нужно обновить сразу все пакеты из requirements.txt. Достаточно выполнить команду:
pip install -r requirements.txt —upgrade
Для удаления пакета выполните:
pip uninstall package-name
Для удаления всех пакетов из requirements.txt:
pip uninstall -r requirements.txt -y
Мы разобрали основы по работе с PIP. Как правило, этого достаточно для работы с большей частью проектов.
Pip: как устанавливать пакеты в Python
Pip — консольный менеджер пакетов для Python. Рассказываем как его установить, и какие возможности управления пакетами он предоставляет.
Pip — менеджер пакетов для Python, работа с ним осуществляется через командную строку. Pip не нужно устанавливать отдельно, если вы пользуетесь Python версии 2.7.9 и новее или версии 3.4 и новее. Если pip установлен, то можно ввести в командную строку:
Команды статье указаны для Windows, работа с pip в Linux может отличаться.
Вы получите справку по основным командам.
Установка pip для Python
Если pip не установлен, то нужно скачать скрипт. Выбирайте папку с номером вашей версии Python. После этого в командной строке перейдите в папку со скриптом и выполните команду:
python get-pip.py
Если pip установлен в папку ProgramFiles, то вам нужно запускать командную строку от администратора.
Если вы установили pip, но все равно получаете ошибку в консоли, нужно указать путь к файлу pip.exe в переменной Path. Для этого зайдите в свойства компьютера>Дополнительные параметры системы>Переменные среды. Здесь (в зависимости о версии Windows) либо добавьте путь к уже существующему через точку с запятой, либо просто нажмите создать и скопируйте путь в новое поле.
Если вам нужно обновить pip напишите в командной строке:
python -m pip install --upgrade pip
Управление пакетами
Чтобы выполнить установку пакета с сайта pypi.org введите в консоли:
python -m pip install ИмяПакета
Если вам нужно использовать несколько версий pip, то нужную можно указать так (начиная с версии pip 0.8):
pip-0.8 install ИмяПакета
Таким же образом можно выбирать версию Python:
python-3.6 -m pip install ИмяПакета
Pip версии 1.5 и выше следует указывать так:
pip2.6 install ИмяПакета
Чтобы обновить пакет введите:
python -m pip install --upgrade ИмяПакета
Для удаления пакета используйте команду uninstall:
python -m pip uninstall ИмяПакета
Флаг -m используется для того чтобы запустить установленный модуль, как скрипт (если написать pip без -m вы можете получить ошибку).
Вывести список всех установленных пакетов в файл можно с помощью :
pip freeze > requirements.txt // название файла может быть любым
При наличии такого файла, можно устанавливать пакеты группами:
pip install -r requirements.txt// версии пакетов в файле указывать не обязательно
Необходимые пакеты можно найти не заходя на сайт pyPi.org (в данный момент недоступно):
pip search строка для поиска
Чтобы узнать подробности об установленном пакете введите:
pip show ИмяПакета
Проверить установлены ли все зависимости для ваших пакетов можно так:
pip check
Теперь, с этими знаниями, вы можете самостоятельно скачать пакет cowsay, зайти в python, и ввести этот текст:
>>> import cowsay >>> cowsay.cow('Я умею работать с pip! Му!')
Готово! У вас есть говорящая консольная корова:
14 Python-пакетов, про которые вы скорее всего не знали
Язык Python предоставляет всем пользователям возможность создавать свои пакеты и делиться ими со всем сообществом. Так появлялись очень популярные библиотеки для работы с данными ( Pandas , Numpy , Matplotlib ), для машинного обучения ( TensorFlow , PyTorch ), для веб разработки. Но есть много смешных, полезных или интересных пакетов, про которые вы вероятно никогда не слышали. Именно про них и пойдёт речь дальше.
Модули, которые не являются частью стандартной библиотеки Python, можно установить с помощью pip install .
tqdm
Отличный инструмент для подключения диаграммы выполнения вашей программы. Название происходит от арабского слова «taqadum», что означает «прогресс».
Для создания прогресс-бара необходим лишь один вызов функции:
from tqdm import tqdm from tqdm.notebook import tqdm # для использования в Jupyter Notebook for i in tqdm(range(10000)): .
В реальном времени показывается процент выполнения, визуальное представление, сколько итераций завершилось, скорость выполнения и ожидаемое время окончания. Также модуль не требует никаких внешних библиотек.
prettytable
Пакет для красивого оформления и вывода таблиц. Есть поддержка заголовков столбцов, импорт из CSV и SQL. Синтаксис опять же очень простой:
from prettytable import PrettyTable x = PrettyTable() x.field_names = ["Country", "Capital", "is_russia"] x.add_row(["Russia", "Moscow", True]) x.add_rows([["Argentina", "Buenos Aires", False], ["Jamaica", "Kingston", False]]) x.add_column("Starts with A", [False, True, False]) print(x)
+-----------+--------------+-----------+---------------+ | Country | Capital | is_russia | Starts with A | +-----------+--------------+-----------+---------------+ | Russia | Moscow | True | False | | Argentina | Buenos Aires | False | True | | Jamaica | Kingston | False | False | +-----------+--------------+-----------+---------------+
Подробнее можно почитать на странице проекта.
emoji
Модуль позволяет получить эмодзи по его текстовому названию. Может быть полезно в проектах, где используются эмодзи, но не хочется хранить их как символ, потому что IDE может плохо их отображать. При этом по названию будет понятен смысл смайлика. Также при написании приложения для обмена сообщениями это будет удобной фичей для пользователей.
Есть поддержка нескольких языков и синонимов (алиасов).
import emoji print(emoji.emojize('Habr is :thumbsup:', use_aliases=True)) # Habr is print(emoji.demojize('Habr is ')) # Habr is :thumbsup: print(emoji.demojize('Habr es ', language='es')) # Habr es :pulgar_hacia_arriba:
Шпаргалку по названиям эмодзи можно посмотреть здесь
uuid
Пакет для генерации случайных id , поддерживает разные модели генерации. Например, uuid4 генерирует рандомный id , а uuid3 на основе md5 от названия объекта, для которого генерируется id . Как всегда, подробности можно найти в документации.
import uuid print(uuid.uuid4()) # example: 2d8959d3-a5b3-42ef-8723-b4f4532f6d14 print(uuid.uuid3(uuid.NAMESPACE_URL, "https://habr.com/ru/users/otter18/")) # e521cf18-5147-3137-9ca5-51bcbebe1b74
freegames
Хотите поиграть на рабочем месте, но игры слишком много весят? Или вы боитесь, что босс увидит, чем вы занимаетесь? Выход есть!
python -m pip install freegames
Теперь вы можете запустить любую игру из списка:
ant bagels bounce cannon connect crypto fidget flappy guess life maze memory minesweeper pacman paint pong simonsays snake tictactoe tiles tron
Для запуска игры snake используйте команду
python -m freegames.snake

Игра на запоминание чисел:

Все игры сделаны с помощью черепашки-рисовальщика.
howdoi
Ещё один прекрасный модуль, который улучшит вашу жизнь. Теперь вам не надо открывать несколько вопросов на StackOverflow , на которые нет понятного ответа с кодом. Вместо этого для вас решение найдёт howdoi :
$ howdoi install all python modules in project pip install -r requirements.txt
Также есть поддержка подсветки, определённых сайтов и поисковых систем.
pyjokes
Если в вашей крови течёт PEP , а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes .
import pyjokes print(pyjokes.get_joke())
Также есть отдельная категория с шутками Чака Норриса. Don’t worry about tests, Chuck Norris’s test cases cover your code too.
Fabulous
Вам не достаточно красивого вывода таблиц в консоль? А как насчёт вывода текста с тенями или даже картинок? Теперь это возможно! (Использовать только в небольших количествах во избежание перелома чувства прекрасного)
from fabulous import text, image print(text.Text("Барсук!", color='#ff8c00', shadow=True, skew=5)) print(image.Image("барсук.png"))

art
Всё, что вам может понадобится для вывода красивых надписей или артов в терминал.
import art print(art.randart()) # \m/(-_-)\m/ art.tprint("Habr", "mix") # надпись Habr буквами из разных языков и шрифтов, которые могут не читаться вашими устройствами
Мне особенно нравится вывод больших букв:
import art print(art.text2art("Habr", font='block'))
.----------------. .----------------. .----------------. .----------------. | .--------------. || .--------------. || .--------------. || .--------------. | | | ____ ____ | || | __ | || | ______ | || | _______ | | | | |_ || _| | || | / \ | || | |_ _ \ | || | |_ __ \ | | | | | |__| | | || | / /\ \ | || | | |_) | | || | | |__) | | | | | | __ | | || | / ____ \ | || | | __'. | || | | __ / | | | | _| | | |_ | || | _/ / \ \_ | || | _| |__) | | || | _| | \ \_ | | | | |____||____| | || ||____| |____|| || | |_______/ | || | |____| |___| | | | | | || | | || | | || | | | | '--------------' || '--------------' || '--------------' || '--------------' | '----------------' '----------------' '----------------' '----------------'
Полный список возможностей можно увидеть в документации.
pyperclip
Модуль для работы с буфером обмена. Подобные возможности также есть в модуле Tkinter (и я пользовался этим способом, потому что он выдавался в Гугле первым):
from tkinter import Tk tk = Tk() tk.withdraw() tk.clipboard_clear() tk.clipboard_append('New clipboard comtent') tk.update() tk.destroy()
Но pyperclip делает жизнь проще:
import pyperclip pyperclip.copy('Habr is the best!') pyperclip.paste()
Под капотом стоит обработка версии системы и поиск соответствующего способа работы с буфером обмена. Например, с помощью командной строки.
moviepy
Пакет для редактирования видео. Имеет такие полезные функции как: обрезка, добавления текста поверх ихображения, поворот видео, создания GIF, коррекция цвета и много другое.
Одним словом, если вы хотите автоматизировать простую работу над видео, то это прекрасный инструмент для ваших целей.
Пример из официальной документации: наложение двух видеофайлов и движущегося текста
from moviepy.editor import * # импорт основного видеоряда ukulele = VideoFileClip("ukulele.MOV", audio=False).subclip(60+33, 60+50).crop(486, 180, 1196, 570) w,h = moviesize = ukulele.size # импорт пианино piano = (VideoFileClip("piano.mp4",audio=False).subclip(30,50).resize((w/3,h/3)).margin( 6,color=(255,255,255).margin( bottom=20, right=20, opacity=0).set_pos(('right','bottom')) ) # создание текста txt = TextClip("V. Zulkoninov - Ukulele Sonata", font='Amiri-regular', color='white',fontsize=24) txt_col = txt.on_color(size=(ukulele.w + txt.w,txt.h-10), color=(0,0,0), pos=(6,'center'), col_opacity=0.6) # создание траектории движения текста: зависимость координаты от времени txt_mov = txt_col.set_pos(lambda t: (max(w/30,int(w-0.5*w*t)), max(5*h/6,int(100*t)))) # генерация финального результата final = CompositeVideoClip([ukulele,txt_mov,piano]) final.subclip(0,5).write_videofile(".avi",fps=24,codec='libx264')
Antigravity
При подключении модуля antigravity в браузере открывается комикс с сайта xkcd.com ( xkcd.ru — версия на русском). В нём рассказывается про то, насколько язык Python простой. Перевод с английского языка:

Приписка автора комикса: I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I’m leaving you.
hello
Все же помнят свой первый вывод Hello World! ? Теперь это сделать ещё легче, надо просто написать в консоли import __hello__ .
please-debug-my-code
И завершает этот список модуль, сделанный мной. В нём живёт маленький помощник, который отдебагает вам любой код.
import please_debug_my_code print(please_debug_my_code.please_help("code", ". "))
Только он иногда не в настроении, и его надо хорошо попросить (или прочитать исходный код и понять, что он любит).
Заключение
Библиотека pypi содежит более 307 тысяч проектов, среди которых вы можете найти подходящий пакет в любой жизненной ситуации. А если такого пакета нет, то почему бы не создать его и не поделиться им со всеми?
Облачные серверы от Маклауд прекрасно подходят для разработки на python.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Как установить Python и pip на Ubuntu
Пайтон — популярный язык программирования, который в большинстве дистрибутивов Linux установлен по умолчанию. У него есть несколько версий, которые имеют сильные различия между собой. Так что я расскажу, как установить различные версии Python и пакетного менеджера pip к нему в Ubuntu.
Проверка версии Python
По умолчанию минимальная установка Ubuntu уже включает в себя пакет Python. Посмотреть его версию можно с помощью пакетного менеджера.
sudo dpkg -l | grep python

Так же, если пакет установлен, то узнать версию Python можно через него самого.
sudo python3 -V Python 3.8.5
В данном случае в ubuntu установлена версия 3.8.5. Обычно 3-я версия пайтона в системе именуется python3, а вторая просто python.
Кстати, а вы знаете, чем Ubuntu Server принципиально отличается от других Linux систем? Читайте мой обзор и сравнение — обзор ubuntu server и сравнение.
Установка Python
Может так быть, что в системе вообще не установлен python. Например, у каких-то провайдеров в их собственных кастомных образах. Они могут вырезать из них вообще все, что по их мнению там лишнее, чтобы уменьшить размер дистрибутива. В таком случае, установить python в ubuntu вам придется самостоятельно.
Рассмотрим сначала момент с установкой самой последней версии python. Сделать это проще всего с помощью пакетного менеджера apt:
sudo apt install python3

Так вы установите самую свежую версию 3-го пайтона, которая присутствует в репозиториях дистрибутива. Чаще всего там будет достаточно свежая версия, так как данный язык программирования и среда исполнения очень распространены.
Установка из исходников
Если вам нужно что-то совсем свежее, то можно скомпилировать и установить python из исходников. Для этого идем на сайт python.org и переходим в раздел Downloads. Находим там самую свежую версию, скачиваем исходники и распаковываем.

wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz tar -zxvf Python-3.9.1.tgz
Для установки python из исходников, нам понадобятся дополнительные системные пакеты. Устанавливаем их:
sudo apt install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev
Теперь можно приступить к сборке:
cd Python-3.9.1 ./configure make -j 4 sudo make altinstall
Проверяем установленную из исходников версию:
python3.9 -V Python 3.9.1

Если у вас уже присутствуют другие версии пайтона в системе, то читайте ниже, как среди них выбрать ту, что будет использоваться по умолчанию.
Установка pip в Ubuntu
Вместе с python обычно используется пакетный менеджер для него. Давайте рассмотрим, как выглядит установка pip в Ubuntu. В зависимости от версии пайтона, устанавливается подходящая версия pip. Тут так же как и с самим интерпретатором версия пакета будет зависеть от версии самого языка. Если он 2-й версии, то ставится просто pip, если 3-й, то pip3.
sudo apt install python3-pip

Проверяем установленную версию pip:
pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
Установленная версия pip соответствует присутствующей в системе версии python 3.8.
Установка пакетов python
Итак, pip мы установили, давайте теперь посмотрим, как с помощью этого пакетного менеджера устанавливать пакеты python. Никаких отличий от других пакетных менеджеров тут нет. Вот пример того, как устанавливается пакет pymysql для работы с базами данных mysql с помощью пайтона.
pip3 install pymysql

Посмотреть список установленных пакетов можно следующим образом:
pip3 list
А вот так вы можете узнать, какие файлы были установлены в систему, принадлежащие указанному пакету.
pip3 show --files pymysql
Удалить пакет с помощью pip можно следующим образом:
pip3 uninstall pymysql
Вкратце по работе с pip все. Ничего сложного, все как обычно.
Обновить Python
Рассмотрим теперь тему с обновлением python в ubuntu. Тут может быть несколько вариантов.
- Обновить с помощью apt до последней версии, находящейся в репозитории системы.
- Использовать для обновления python сторонний репозиторий.
- Собрать самую свежую версию из исходников.
Первый и третий варианты мы уже рассмотрели ранее. Обновление python до последней версии ничем не будет отличаться от чистой установки. В случае с пакетным менеджером apt, вам просто вместо install нужно будет указать upgrade.
sudo apt upgrade python3

Если в подключенных репозиториях ubuntu будет свежая версия python, то будет обновление до нее. Если нет, то ничего не произойдет. Останется текущая версия.
Обычное самые свежие версии python есть в отдельном репозитории deadsnakes. Подключим его:
sudo add-apt-repository ppa:deadsnakes/ppa
А теперь попробуем поставить самую последнюю версию python из этого репозитория.
sudo apt install python3.9

В итоге мы обновились до самой свежей версии python 3.9.1. При этом нам не пришлось ее собирать из исходников. Мы воспользовались установкой через пакетный менеджер, а значит нам будет проще обновляться в дальнейшем и поддерживать актуальную версию. Обновления будут приходить автоматически через apt.
Выбор по умолчанию
В описанных выше разделах мы установили как минимум 2 разные версии python3 — 3.8.5 и 3.9.1. Давайте теперь разберемся, какая их них будет выбираться по умолчанию.
В ubuntu указать дефолтную версию python, которая будет выбираться по умолчанию, можно с помощью команды update-alternatives. Вот как это выглядит:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
Проверяем теперь дефолтную версию:
python -V Python 3.8.5

Так мы установили в системе по умолчанию версию python 3.8.5. А теперь изменим это на более свежую версию 3.9.1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 5 sudo update-alternatives --config python
В предложенном списке выбираем нужную нам версию пайтона, которая будет использоваться по умолчанию в нашей системе ubuntu.

Таким образом, можно добавить сколько угодно версий python в систему и выбирать среди них ту, что будет дефолтной. А к остальным можно обращаться по прямым ссылкам. Например так — /usr/bin/python3 .
Как запускать Python скрипты
С установкой и обновлением пайтона разобрались. Давайте теперь посмотрим, как нам запускать скрипты в системе. Ничего особенного для этого делать не надо. Достаточно указать бинарник интерпретатора и сам скрипт. Примерно так выглядит запуск python скрипта в ubuntu:
python script.py
Скрипт будет запущен дефолтной версией пайтона. Если нужно запустить в какой-то конкретной версии, то делается это так:
/usr/bin/python3.9 script.py
Так же скрипты пайтона можно запускать напрямую в консоли. Для этого в самом начале скрипта нужно объявить окружение.
#!/usr/bin/env python

После этого достаточно сделать файл исполняемым и запустить прямо в консоли.
chmod +x script.py ./script.py

Если вы хотите запускать скрипт как службу, то вам придется добавить юнит в systemd. Делается это следующим образом. Создаем файл /lib/systemd/system/python.service :
[Unit] Description=Python Service After=multi-user.target Conflicts=getty@tty1.service [Service] Type=simple ExecStart=/usr/bin/python /home/user/script.py StandardInput=tty-force [Install] WantedBy=multi-user.target
После этого перечитываем конфигурацию systemd и запускаем скрипт на пайтоне как службу:
sudo systemctl daemon-reload sudo systemctl enable python.service sudo systemctl start python.service

Так как мой скрипт не предполагает работу в режиме службы, то после выполнения он был завершен. Если же у вас там запрограммирована непрерывная работа, то он будет работать как служба через systemd.
Как удалить Python в Ubuntu
Если вам по какой-то причине необходимо удалить python с сервера ubuntu, то сделать это можно штатным образом через пакетный менеджер apt. Для того, чтобы узнать версию пакетов для удаления, можно вывести их список.
sudo dpkg -l | grep python
После этого, подставляя версию нужного пакета, удалить его:
sudo apt remove python3
Только будьте внимательны при удалении python из системы. Он очень много кем используется. При его удалении будет предложено удалить и все его зависимости. А это внушительный список пакетов, которые без пайтона не смогут работать.

К примеру, без пайтона не сможет работать netplan, с помощью которого настраивается сеть. Так что аккуратнее с удалением питона из системы.
Запуск Python в Docker
Ну и в завершении статьи про Python в Ubuntu, покажу, как можно еще его запускать без локальной установки непосредственно в саму систему. Вы можете запустить питона в докере. Для этого просто выберите необходимую вам версию Python и запустите Docker контейнер с ней.
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python script.py
В данном случае я быстро запустил свой скрипт в версии 3, используя контейнер python:3. Если мне то же самое нужно сделать во 2-й версии, то я просто использую другой контейнер.
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:2 python script.py
Таким образом я могу запускать свой скрипт на любой версии python без необходимости его локальной установки. В приведенном примере контейнер будет автоматически остановлен и удален после выполнения скрипта. За это отвечает параметр —rm, который я указал.
