База знаний
FirstDedic
Как установить Python 3.9, 3.12 и виртуальное окружение (VENV)
Python — это простой по синтаксису и лёгкий для начинающего разработчика язык программирования, с помощью которого можно решить огромный спектр задач, начиная от автоматизации любых операций и заканчивая написанием полноценных веб-сервисов или сложных алгоритмов для машинного обучения.
В статье мы рассмотрим, как установить и использовать несколько версий Python 3, переключаться между ними, как работать в виртуальном окружении (VENV), рассмотрим пакетный менеджер Pip и как запустить python-скрипт на сервере.
- Установка Python на сервере с ispmanager
- Установка Python из исходников
- Установка Python из стореннего репозитария
- Управление альтернативными версиями
- Установка и начало работы с Python virtualenv (VENV)
Установка Python на сервере с ispmanager
Если на вашем сервере установлена панель ispmanager, то процесс будет быстрым и простым. Достаточно перейти в пункт меню Настройки - Конфигурация ПО - выбрать пункт Python и нажать Изменить.

После чего достаточно выбрать нужную версию и процесс установки начнется.
После его завершения бинарный файл будет доступен по пути/opt/ispmanager/, в нашем случае /opt/ispmanager/python3.12/bin/python3.12.

Установка Python из исходников
Самый надежный и правильный способ установки ПО не из официальных репозиториев вашей ОС. Будем собирать пакеты скачанные с официального сайта.
Обновляем репозитории и устанавливаем обновления для нового сервера
apt update && apt upgrade -y
для уже работающего обновим только репозитории
apt update
Устанавливаем пакеты которые необходимы для сборки:
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev pkg-config zlib1g-dev zlibc -y
Переходим на страницу релизов Python и загружаем нужный архив.
Загружаем архив с нужной версией и распакуем его:
cd /tmp
wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz tar -xvf Python-3.12.3.tgz cd Python-3.12.3
И запустим сценарий конфигурации:
./configure --enable-optimizations
После чего соберём пакет командой:
make -j$(nproc)
#Ключ -j
указывает на количество одновременно выполняемых операций, здесь можно указать число равное количеству ядер процессора для вашего сервера чтобы ускорить сборку. Или задать nproc
, как в примере выше, чтобы использовать сразу все доступные ядра.
Когда процесс будет завершён запускаем финальную команду:
make altinstall
Готово, на сервер установлена альтернативная версия Python 3.12.3
Для проверки запустим интерактивную сессию Python:

Установка Python из стореннего репозитория
Для примера возьмём Ubuntu 22, там установлена нативная версия Python 3.10.12 по умолчанию. Проверим версию установленного пакета командой:
python -V

Но актуальная версия на текущий момент – 3.12. С историей версий можно ознакомиться непосредственно на сайте Python.
Запускаем обновление репозиториев и пакетов операционной системы. На боевом сервере просто обновим репозитории (apt update
).
На новом попутно обновим все пакеты:
apt update && apt upgrade -y
Далее установим пакет для управления независимыми репозиториями и добавим сам репозиторий Deadsnakes:
apt install software-properties-common -y && add-apt-repository ppa:deadsnakes/ppa
Подтверждаем добавления репозитория нажатием кнопки Enter.
После чего можно установить на сервер любую доступную версию Python, подходящую для ваших задач.
На момент написания статьи последняя доступная стабильная версия из репозитория — Python 3.10.
Проверить, есть ли актуальная версия 3.12, можно командой
apt-cache policy ‘python3.12’
Установим Python 3.12, для этого выполняем команду:
apt install python3.12 -y

Для проверки запустим интерактивную сессию свежеустановленный Python:
python3.12 print("FirstDEDIC")

Для выхода из интерактивной сессии нажимаем Ctrl+D, также выйти можно с помощью команды quit()
или exit()
.
Управление альтернативными версиями
Для управления установленными версиями Python и выбора основной используем службу update-alternatives
.
Если вы всё же приняли решение обновить нативную версию, то добавляем установленные на сервере версии как альтернативные:
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
#/usr/bin/python3.10
— путь до установленной из штатного репо версии в операционной системе.
#1
— приоритет.
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2
#Здесь принцип тот же, путь до установленной версии и приоритет 2
.
И добавляем собранную из исходников версию:
update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 3
Проверяем:
update-alternatives --list python3

Для установки альтернативной версии как основной выполняем команду
update-alternatives --config python3
и выбираем нужный номер версии, который указан в колонке Selection
:

update-alternatives --config python3
Получившийся результат - по вызову python3 работает версия “из исходников”:

Если хотим переключиться, например, на версию ISPmanager, которую мы установили ранее, добавляем ее по аналогии:
update-alternatives --install /usr/bin/python3 python3 /opt/ispmanager/python3.12/bin/python3.12 4
и выбираем через update-alternatives --config python3

Таким образом, в нашем примере установлено аж четыре версии Python:
а) “родной” из репозитариев Ubuntu 22 версии 3.10
б) из стороннего репозитария DeadSnakes версии 3.12.2
в) Собранный из исходников версии 3.12.3
г) Установленный из репозитариев ISPmanager версии 3.12.0
Установка и начало работы с Python virtualenv (VENV)
Если вы планируете запускать на сервере несколько разных программ Python, то лучше использовать виртуальное окружение, чтобы избежать проблем с производительностью. Использование VENV позволит установить разные пакеты PIP и не нагружать ими нативную версию Python. Подробнее об этом рассказываем в одном из следующих разделов.
Аббревиатура VENV расшифровывается как «virtual environment», что в переводе означает «виртуальная среда». Размещение проектов в изолированной виртуальной среде позволяет управлять абсолютно разными проектами Python на одном сервере. Проекты могут использовать разный набор библиотек и разную версию Python, при этом для каждой отдельной виртуальной среды можно использовать собственные настройки.
Выполним установку venv:
apt install python3-venv -y
Для установки venv на альтернативную версию для Ubuntu используем команду следующего вида:
apt install -y python3.12-venv -y
Создадим директорию, в которой будет находится наше виртуальное окружение, и сразу перейдём в неё:
mkdir dedic_project && cd dedic_project
Можно использовать любую удобную директорию.
Активируем виртуальную среду:
python3 -m venv dedic_env или python3.12 -m venv dedic_env
Где «dedic_env»
название нашего проекта.
Выполнение команды в консоли вернёт пустой результат - значит всё хорошо и ошибок нет.

Активируем созданную среду командой:
source /путь_до_окружения/bin/activate
#В нашем примере получилась вот такая команда: source dedic_project/dedic_env/bin/activate
Когда виртуальная среда стала активна, то в командной строке перед именем пользователя появляется префикс созданной среды:

При работе в venv, как и в основной системе, вы можете использовать команды python
и pip
вместо python3
и pip3
соответственно.

Для выхода из окружения используем команду:
deactivate

После чего примечания справа пропадёт.
ля управления большим количеством окружений есть замечательный инструмент virtualenvwrapper
. Более подробную информацию можно найти на официальном сайте этого программного обеспечения.
Установка менеджера пакетов PIP
Для решения большинства задач в Python уже созданы библиотеки, и вам не требуется писать с нуля модули, например, для взаимодействия с базами данных или веб-сервером. В свободный доступ менеджера пакетов PIP добавлено более 382 тысяч пакетов, что само по себе является впечатляющей цифрой. Сложно вообразить, какое количество строк кода уже было написано и какие возможности нам открывает этот инструмент.
Приступим к установке менеджера PIP для управления библиотеками Python, которые не входят в стандартную сборку:
apt install python3-pip -y
Если на сервере есть альтернативные версии Python, которые вы используете, то выполняем обновление PIP для этой версии:
python3.12 -m pip install --upgrade pip
#Вместо 3.12
можно указать нужную версию
Рассмотрим синтаксис утилиты:
pip3 [команда] [опции] [имя пакета]
Вот набор основных команд, которые пригодятся при работе с PIP:
install
— установить пакет.install -U
— обновление пакетов.uninstall
— удалить пакет.search
— найти пакет.list
— список установленных пакетов.show
— просмотр информации о установленном пакете.
Для примера установим пакет aiogram
:
pip3 install aiogram
Проверяем наличие библиотеки для основной версии командой:
pip3 list | grep aiogram
или pip3 show aiogram
Для установки библиотек на альтернативную версию Python используем команду следующего вида:
python3.12 -m pip install aiogram
Проверим, установилась ли эта библиотека на альтернативную версию:
python3.9 -m pip list | grep aiogram
или python3.9 -m pip show aiogram
Найти название нужной библиотеки, посмотреть документацию к ней и получить команду для её установки всегда можно на официальном сайте pypi.org
Использование requirements.txt
Если потребуется масштабировать вашу программу, перенести её на другой сервер или развернуть проект из GitHub, не устанавливая каждый пакет PIP, который требуется для запуска, отдельно — всё это можно реализовать с помощью встроенного функционала. Все пакеты можно сохранить в файл requirements.txt
(такое название необязательно, но является общепринятым стандартом), а затем развернуть их на сервере или в виртуальном окружении VENV.
Чтобы сохранить информацию о всех установленных пакетах PIP, используем команду:
pip3 freeze > requirements.txt
Для установки пакетов, которые были сохранены в файл, команда следующая:
python3 -m pip install -r requirements.txt
или pip3 install -r requirements.txt
Запуск скриптов Python при старте сервера через Cron
Большинство начинающих пользователей сталкиваются с вопросом: «Как автоматизировать запуск программы на Python и добавить скрипт автозагрузку?»
Самый простой способ добавить задачу в Cron.
Если вы используете venv, то задача, добавленная в планировщик, будет выглядеть вот таким образом:
@reboot source /путь_до_окружения/bin/activate && python /путь_до_скрипта.py
Запуск скрипта без виртуального окружения:
@reboot /usr/bin/python3 /путь_до_скрипта.py
Проверить, правильно ли вы добавили команду, можно, запустив скрипт по путям, которые добавлены в планировщик Cron. Чтобы точно убедиться, что скрипт запускается после перезагрузки, давайте проверим это на практике и отправим сервер на перезагрузку командой:
reboot
Если ваш проект запустился после загрузки операционной системы, то всё работает. В ином случае смотрим логи Cron и ищем ошибку.

База знаний