Как настроить python в Linux под свой проект?
Привет, Хабр! Меня зовут Дмитрий Алексеев, я Data Scientist и являюсь участником профессионального сообщества NTA. Сегодня расскажу как использовать python и Linux «в связке», и как это поможет облегчить вам жизнь.

Операционная система Linux получила большую популярность среди админов и разработчиков благодаря ряду преимуществ таким, как бесплатное распространение, наличие открытого исходного кода, низкие требования к вычислительным ресурсам.
Python интерпретатор предустановлен в большинстве дистрибутивов Linux. Согласно рейтингу TIOBE на текущий момент самым упоминаемым в поисковых запросах языком программирования является python. Python обладает низким порогом входа, но имеет большой спектр возможностей для применения.
Использование python и Linux «в связке» может сильно облегчить вам жизнь. Я расскажу о том, как настроить python в Linux под нужды своего проекта.
Определение виртуальной среды
Виртуальная окружение (или виртуальная среда) — это изолированная среда для проекта. Это «песочница», в рамках которой запускается приложение со своими версиями библиотек, обновление и изменение которых не затронет другие приложения, использующие те же библиотеки. Тем самым использование виртуальных сред позволяет избежать конфликтов версий.
Виртуальное окружение со всеми необходимыми настройками можно «передавать» вместе с вашим приложением. Так другому разработчику будет проще работать с вашим проектом.
Также библиотеки, которые необходимы только в одном проекте, можно подгрузить в виртуальное окружение и тем самым не засорять глобальное окружение.
Проверка версии Python
Как уже говорилось ранее, python предустановлен в большинстве дистрибутивов Linux. Я использовал версию Ubuntu 20.04.
Проверить текущую версию python можно с помощью команды: python3 -V.

Обновление пакетов
Вначале рассмотрим работу с python библиотеками в Linux.
Advanced Package Tool (apt) – это пакетный менеджер, позволяющий производить различные манипуляции с пакетами: устанавливать, удалять, обновлять, искать, загружать без установки. При этом все зависимости будут разрешаться автоматически.
Пакет – это архив, в котором содержатся бинарные и конфигурационные файлы, информация о том, куда их разместить в файловой системе и список действий по установке. В Linux python библиотеки являются пакетами.
В Linux есть список репозиториев, из которых происходит установка пакетов. Список хранится в текстовом файле /etc/apt/sources.list, а также в директории /etc/apt/sources.list.d/. При выполнении команды apt update, apt обращается к списку репозиториев и из каждого репозитория в списке получает информацию о пакетах, находящихся в нем. Вся эта информация сохраняется в операционной системе.
Если выходит новая версия библиотеки, то apt не узнает об этом, пока не будет обновлена информация в репозиториях. Поэтому, если установить пакет, предварительно не выполнив обновление, то будет установлена та версия пакета, информация о которой хранится в системе в данный момент.
Для обновления пакетов необходимо выполнить следующие две команды.
Первая команда: sudo apt update.

Вторая команда: sudo apt -y upgrade.
Флаг -y в команде обозначает автоматическое подтверждение запросов на установку.

Установка пакетов venv
Для работы с виртуальным окружением в Linux нужно установить пакет venv с помощью следующей команды: sudo apt install python3-venv.

Создание виртуальной среды в Linux
Создать виртуальное окружение можно командой python3 -m venv my_venv.
My_venv – название виртуального окружения.
Приведенная выше команда создает каталог с именем «my_venv» (а также родительские каталоги, которые ещё не существуют), содержащий менеджер пакетов pip, интерпретатор, скрипты и библиотеки.
С помощью команды ls -la можно увидеть файлы в текущей директории.

Если вы хотите создать папку с окружением в конкретной директории, то вместо названия окружения нужно указать путь к папке. Например, python3 -m venv
Далее перейду в созданный каталог и посмотрю содержимое созданной папки.

Файл pyvenv.cfg содержит ключ, который будет указывать на ту версию Python, для которой запущена эта команда.
Каталог bin содержит копию/символическую ссылку двоичных файлов Python.
Каталог include включает в себя С-заголовки, компилирующие пакеты Python.
В каталог share входит python wheels. Python wheels — это формат готовых пакетов для Python, который помогает ускорить разработку программного обеспечения за счет сокращения количества операций компиляции.
Каталог lib в виртуальной среде имеет такую же структуру, как каталог lib в глобальном окружении. И содержит папку site-packages, в которую устанавливаются библиотеки.
Активация виртуальной среды
Виртуальное окружение создано. Для начала работы с окружением нужно его активировать.
Чтобы начать использовать эту виртуальную среду, вам необходимо активировать ее, запустив скрипт под названием activate:

После активации строка консоли будет иметь префикс с именем среды.
Можно проверить версию python.

А также посмотреть список установленных в окружении библиотек.

Установим библиотеку внутри виртуальной среды
Попробую установить библиотеку в окружение.

После активации все библиотеки будут устанавливаться в данное виртуальное окружение.

Чтобы проверить как установилась библиотека, можно попробовать импортировать её.

Если при импорте ошибок не было, значит установка библиотеки прошла успешно.
Совместное использование
Если вы хотите, чтобы другие могли на своих компьютерах запустить код вашего проекта, то помимо кода им необходимо иметь те же версии библиотек, что и у вас.
Для этого создадам файл, в котором будут прописаны все необходимые библиотеки и их версии.
Выполню следующую команду:

Файл requirements.txt содержит все библиотеки (с указанием их версий), которые установлены в данном окружении.
Установить все эти библиотеки можно выполнив одну команду в терминале: pip install -r requirements.txt.
После успешной установки библиотек другой человек сможет запустить ваш проект на своем компьютере.
Деактивация
Чтобы выйти из виртуального окружения, необходимо ввести команду deactivate.

Заключение
В публикации я рассмотрел тему виртуальных окружений в Linux. Материал позволит вам более осознанно подходить к процессу разработки и облегчит поддержку ваших проектов. Остались вопросы, буду рад ответить на них в комментариях.
Установка Python 3 и настройка среды разработки на сервере Ubuntu 20.04
Python – это популярный язык программирования для разработки различных программных проектов. Гибкий и многофункциональный, Python отлично подходит для создания скриптов, настройки автоматизации, анализа данных, машинного обучения и разработки бекэнда. Python вышел в свет в 1991 и назван в честь британской комик-группы Monty Python: так разработчики хотели подчеркнуть, что этот язык программирования до смешного прост в использовании.
Данный мануал поможет установить Python 3 на сервер Ubuntu 20.04 и настроить среду разработки. Программирование на сервере имеет множество преимуществ и упрощает взаимодействие с другими членами вашей команды.
Примечание: Общие принципы данного руководства применимы к любому дистрибутиву Debian Linux.
Требования
Для работы вам понадобится сервер Ubuntu 20.04, настроенный по этому мануалу.
Также рекомендуем ознакомиться со статьей Основы работы с терминалом Linux.
1: Установка Python 3
В системе Ubuntu 20.04 и других дистрибутивах Debian Python 3 установлен по умолчанию. Чтобы обновить пакеты системы, используйте apt (Advanced Packaging Tool):
sudo apt update
sudo apt -y upgrade
Флаг –y автоматически подтвердит установку.
Примечание: В зависимости от версии Linux некоторые запросы программы нужно подтвердить самостоятельно.
Чтобы узнать, какая версия Python 3 установлена в системе, введите:
В окне терминала вы увидите номер текущей версии.
Примечание: Номер версии может отличаться.
Теперь установите pip, пакетный менеджер Python, который помогает устанавливать необходимые проекту пакеты и управляет ими:
sudo apt install -y python3-pip
Для установки пакетов используется такой синтаксис:
pip3 install package_name
где package_name – это имя пакета или библиотеки, которую нужно установить. Например, чтобы установить библиотеку NumPy, можно ввести команду:
pip3 install numpy
Теперь нужно установить несколько инструментов для разработки:
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
Итак, мы установили базовые инструменты Python. Теперь можно создать виртуальную среду для нашего проекта.
2: Создание виртуальной среды
Виртуальная среда – это изолированное пространство для проектов Python, благодаря которому все проекты могут иметь индивидуальный набор зависимостей и использовать разные версии одной программы, при этом никак не влияя на работу системы в целом.
Среда разработки позволяет управлять проектами Python и различными версиями пакетов, что особенно важно при работе со сторонними пакетами.
Количество виртуальных сред Python в системе не ограничено. По сути, каждая такая среда – это каталог, в котором лежит несколько сценариев, благодаря которым этот каталог может использоваться в качестве среды.
Python предлагает несколько способов создать виртуальную среду, но мы воспользуемся модулем venv, который включен в стандартную библиотеку Python 3. Установите его:
sudo apt install -y python3-venv
Итак, модуль установлен. Выберите или создайте каталог, где будут храниться все ваши среды разработки Python.
mkdir environments
cd environments
Чтобы создать в этом каталоге виртуальную среду, введите команду:
python3 -m venv my_env
Примечание: Вместо my_env введите описательное имя вашей среды.
По сути, pyvenv создает новый каталог, содержащий несколько элементов, которые мы можем просмотреть с помощью команды ls:
ls my_env
bin include lib lib64 pyvenv.cfg share
Эти файлы изолируют проект от общей системы локальной машины, благодаря чему системные файлы и файлы проекта не смешиваются и никак не влияют друг на друга. Это обеспечивает удобное управление версиями, а также доступ проектов к зависимостям и необходимым версиям пакетов.
Python Wheels (встроенный формат, который позволяет ускорить разработку программного обеспечения за счет уменьшения количества операций компиляции) в Ubuntu 20.04 можно найти в каталоге share.
Чтобы использовать виртуальную среду, ее нужно включить:
Эта команда запустит сценарий activate из каталога bin.
После этого командная строка будет выглядеть так:
Примечание: Префикс может отличаться в зависимости от дистрибутива Debian Linux.
Этот префикс позволяет вам определить, в какой именно среде вы находитесь. Все команды, запущенные в такой среде, будут действовать только в рамках этой среды.
Примечание: В виртуальной среде можно использовать команду python вместо python3 и pip вместо pip3. Вне виртуальной среды в Python 3 используются только команды python3 и pip3.
3: Создание простой программы
Чтобы проверить работу виртуальной среды Python, попробуйте создать простую программу, которая будет отвечать «Hello, World!». Это позволит нам протестировать среду и даст возможность ближе познакомиться с Python.
Откройте текстовый редактор и создайте файл:
Вставьте в файл такую строку:
Закройте редактор и сохраните файл (Ctrl+X, Y).
Созданная нами программа выведет в терминал:
Чтобы закрыть среду, просто введите команду:
Эта команда вернёт вас в общесистемную командную строку.
Заключение
Теперь у вас есть изолированная виртуальная среда разработки Python, и вы можете приступать к разработке ваших проектов.
Деплой Python приложения на сервер и управление Supervisor
После того, как приложение на Python написано, хочется, чтобы оно было всегда доступно, а не только в то время запуска на своем компьютере. Для этого необходимо развернуть его на сервере. В этой статье рассмотрим деплой на сервер на примере простого telegram бота, отображающего форму для введения даты.
Перед началом необходимо загрузить ваше приложение на github или bitbucket.
В сети можно найти информацию о том, что существует множество ресурсов, позволяющих бесплатно арендовать выделенный сервер и задеплоить приложение. Одни из самых популярных это PythonAnyWhere и Heroku. На практике, оба провайдера работают нестабильно и предоставляют сильно урезанный функционал.
Потратив значительное количество времени, но так и не добившись стабильной работы, я пришел к выводу, что удобнее арендовать свой выделенный сервер.
Около трех лет назад, когда я занимался веб-разработкой, арендовал хостинг у SprintHost. У них была адекватная техническая поддержка и хорошие тарифы, поэтому сейчас остановил свой выбор на SprintBox.
После регистрации в личном кабинете на почту приходит письмо с данными для подключения к серверу по ssh. Для windows необходимо скачать Putty, на маке можно подключаться к серверу через терминал.
Подключиться к серверу можно используя команду ниже, где вместо x — адрес сервера
# ssh root@xxx.xxx.xx.xx
После подключения будет предложено ввести пароль, при вводе пароля в терминале ничего не отобразится, это нормально, нужно набрать пароль и нажать Enter.
Если нет опыта работы с терминалом Linux, вот команды, которые будут нужны сразу
Перемещение в терминале осуществляется командой cd имя_папки
Перейти назад cd ..
Посмотреть список файлов в текущей папке ls
Выйти из текстового редактора/консоли можно нажав ctrl+z или ctrl+x
Перед началом работы необходимо обновить пакетный менеджер
# sudo apt update
Для того, чтобы затянуть проект на сервер из github, нужно установить git
# apt install git
Создадим нового пользователя
# adduser tgbot
Перейдем в папку пользователя
# cd home/tgbot
Загрузим проект с github, если репозиторий приватный, то нужно будет ввести имя пользователя и пароль
# git clone https://github.com/mihailaleksseev/tg_date_picker_bot.git
После скачивания проекта на сервер нужно поставить необходимые зависимости с помощью пакетного менеджера pip, выполнив команды
# pip install имя_зависимости
Для того, чтобы узнать какие зависимости необходимо поставить, необходимо на компьютере разработчика выполнить команду
# pip list
Наконец запустим проект
Для этого нужно перейти в его корень
# cd tg_date_picker_bot
И запустить файл Python
# python3 main.py
Однако, при выходе из консоли, приложение прекратит работу. Для запуска приложения в фоне можно использовать Supervisor. Данный инструмент можно использовать также для проектов на других языках, не только Python.
Установим Supervisor
# apt install supervisor
После установки необходимо в конфигурации указать настройки для нашего приложения.
Перейдем в папку с конфигурациями
# cd /etc/supervisor
Откроем конфигурацию с помощью текстового редактора nano, он несколько проще, чем vim
nano /etc/supervisor/supervisord.conf
Из последней строчки можно заметить, что в основную конфигурацию подключаются все файлы конфигураций, расположенные в папке conf.d
Добавим нашу конфигурацию туда
Перейдем в папку conf.d и создадим там новый конфигурационный файл
# cd conf.d
# touch tgBot.cond
Теперь пропишем в нем конфигурацию бота
command — команда, отвечающая за запуск
directory–адрес папки, в которой находится приложение
autostart–запуск приложения после включения сервера
autorestart–перезапуск приложения, после того, как его работа завершилась с ошибкой
Для сохранения файла нужно нажать ctrl+o и ctrl+x для выхода
Теперь, чтобы supervisor считал обновленные настройки, выполним команду
# supervisorctl reread
И для запуска всех сконфигурированных процессов команду
# supervisorctl update
Можно зайти в инструменты командной строки супервизора командой
# supervisorctl
И посмотреть статус приложения
# status tgbot
Перезапустить приложение можно командой
# restart tgbot
Для выхода из командной строки нужно нажать ctrl+z
Логи приложений можно найти в директории /var/log/supervisor
Супервизор хранит файл с ошибками и логами приложения
Удобнее их смотреть командой tail. С параметрами, приведенными ниже, она выводит в режиме реального времени 30 строк файла с логами в консоль, по мере их поступления
# tail -f -n 30 tgbot-stderr — -supervisor-kq121.log
Установка Python 3 и настройка среды программирования на сервере Ubuntu 18.04

Python — гибкий и универсальный язык программирования, который можно использовать для разнообразных задач. Особенно полезен для создания скриптов, автоматизации, анализа данных, машинного обучения и разработки серверных компонентов приложений. Разработчики выпустили первую версию языка Python в 1991 году с целью создать интересный язык программирования и назвали его в честь британской комедийной группы Monty Python. Python легко настраивать, и с его помощью можно создавать относительно простой код с немедленным получением уведомлений об ошибках. Это отличный выбор как для начинающих, так и для опытных разработчиков. Python 3 — самая последняя версия этого языка, которая считается будущим Python.
В этом обучающем модуле вы научитесь настраивать на сервере Ubuntu 18.04 среду программирования Python 3. Программирование на сревере дает много преимуществ и обеспечивает поддержку совместной работы над проектами разработки. Общие принципы этого обучающего модуля относятся к любым дистрибутивам Debian Linux.
Предварительные требования
Для выполнения этого обучающего руководства у вас должен быть пользователь без прав root с привилегиями sudo на сервере Ubuntu 18.04. Чтобы выполнить необходимую первоначальную настройку, воспользуйтесь нашим руководством по ручной начальной настройке сервера или запустите наш автоматизированный скрипт.
Если вы еще не знакомы со средой терминалой, вам будет полезна статья «Введение в терминалы Linux».
После настройки сервера и пользователя вы можете продолжить.
Шаг 1 — Настройка Python 3
Ubuntu 18.04 и другие версии Debian Linux поставляются с предустановленными средами программирования Python 3 и Python 2. Чтобы убедиться в обновлении версий, мы выполним обновление системы с помощью команды apt для работы с инструментом Ubuntu Advanced Packaging Tool:
Флаг -y показывает, что мы соглашаемся установить все элементы. В зависимости от вашей версии Linux вам может понадобиться подтвердить выбор в дополнительныхх диалогах по мере установки обновлений.
После завершения этой процедуры мы можем проверить установленную в системе версию Python 3 с помощью следующей команды:
На экране терминала будет выведена страница результатов, где вы сможете увидеть номер версии. Хотя номер версии может различаться, результат будет выглядеть примерно так:
Для управления программными пакетами Python мы установим инструмент pip, предназначенный для установки и управления пакетами программирования, которые мы можем захотеть использовать в наших проектах разработки. Дополнительную информацию о модулях и пакетах, которые можно установить с помощью pip, можно найти в документе «Импортирование модулей в Python 3».
Пакеты Python можно установить с помощью следующей команды:
Здесь package_name может относиться к любому пакету или любой библиотеке Python, в том числе Django для веб-разработки или NumPy для научных вычислений. Если вы захотите установить NumPy, вы можете использовать команду pip3 install numpy .
Можжно установить несколько дополнительных пакетов и средств разработки, чтобы получить надежную основу для нашей среды программирования:
После настройки Python и установки pip и других инструментов мы можем настроить виртуальную среду для наших проектов разработки.
Шаг 2 — Настройка виртуальной среды
Виртуальные среды позволяют выделять на сервере изолированную область для проектов Python. Благодаря этому каждый из ваших проектов может иметь собственный набор зависимостей, которые не помешают функционированию других ваших проектов.
Настройка среды программирования обеспечивает нам дополнительный контроль над нашими проектами Python и над обработкой разных версий пакетов. Это особенно важно при работе с пакетами сторонних разработчиков.
Вы можете настроить любое желаемое количество сред программирования Python. Каждая среда представляет собой каталог или папку на сервере, содержащую несколько скриптов, обеспечивающих ее работу.
Хотя существует несколько способов создания среды программирования в Python, мы используем модуль venv, входящий в состав стандартной библиотеки Python 3. Для установки venv введите следующую команду:
С этим модулем мы готовым приступить к созданию сред. Вначале выберем каталог, где мы хотим разместить наши среды программирования Python, или создадим такой каталог с помощью команды mkdir :
Для создания среды перейдите в каталог, где вы хотите разместить среды, и введите следующую команду:
Команда pyvenv настраивает новый каталог, содержащий несколько элементов, которые мы можем просмотреть с помощью команды ls :
Совместная работа этих файлов обеспечивает изоляцию ваших проектов в более широком контексте вашего локального компьютера, так что системные файлы и файлы проекта не смешиваются. Будет очень полезно использовать контроль версий и обеспечить каждому из ваших проектов доступ к конкретным пакетам, которые ему необходимы. Python Wheels — это формат готовых пакетов для Python, помогающий ускорить разработку программного обеспечения за счет сокращения количества операций компиляции. Он находится в каталоге share в Ubuntu 18.04.
Чтобы использовать эту среду, ее нужно активировать. Для этого введите следующую команду, вызывающую скрипт activate:
В командной строке теперь будет отображаться имя вашей среды, в данном случае my_env . В зависимости от используемой версии Debian Linux префикс может выглядеть несколько иначе, однако называние вашей среды в скобках — это первое, что вы увидите в строке:
Префикс сообщает нам, что среда my_env активна, и что при создании программ они будут использовать настройки и пакеты этой конкретной среды.
Примечание. В виртуальной среде вы можете при желании использовать команду python вместо python3 и команду pip вместо pip3 . Если вы используете Python 3 на компьютере вне виртуальной среды, вы можете использовать только команды python3 и pip3 .
После выполнения этих шагов ваша виртуальная среда готова к использованию.
Шаг 3 — Создание программы «Hello, World»
Теперь мы настроили нашу виртуальную среду и готовы создать традиционную программу «Hello, World!» Это позволит нам протестировать нашу среду и познакомиться с Python поближе, если мы еще не сделали этого.
Для этого мы откроем текстовый редактор командной строки (например, nano) и создадим новый файл:
Когда текстовый файл откроется в окне терминала, мы введем нашу программу:
Для выхода из nano нажмите клавиши CTRL и X , а когда система предложит вам сохранить файл, нажмите клавишу y .
После выхода из nano и возврата в оболочку мы запустим программу:
Программа hello.py , которую вы только что создали, выведет на вашем терминале следующее:
Для выхода из среды просто введите команду deactivate , и вы вернетесь в исходный каталог.
Заключение
Поздравляем! Вы настроили среду программирования Python 3 на своем сервере Debian Linux можете начинать проект по программированию!
Если вы используете локальный компьютер, а не сервер, воспользуйтесь обучающем модулем «Установка и настройка локальной среды программирования для Python 3» для вашей операционной системы.
Ваш сервер готов к разработке программного обеспечения. Дополнительную информацию о программировании на Python вы можете узнать из нашей бесплатной электронной книги «Программирование на Python 3» или в обучающих модулях по проектам программирования.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.