Время прочтения: 6 мин.

Операционная система Linux получила большую популярность среди админов и разработчиков благодаря ряду преимуществ, таких как бесплатное распространение, наличие открытого исходного кода, низкие требования к вычислительным ресурсам.

Python интерпретатор предустановлен в большинстве дистрибутивов Linux. Согласно рейтингу TIOBE, на текущий момент самым упоминаемым в поисковых запросах языком программирования является 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 ~/my_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. Данный материал позволит более осознанно подходить к процессу разработки и облегчит поддержку ваших проектов. Если остались вопросы, буду рад ответить на них в комментариях.