Что такое requirements.txt и как с ним работать?

Существует множество пакетов Python, которые мы ежедневно используем для решения различного рода задач. Возьмем, к примеру, библиотеку «Beautiful Soup» — она не поставляется с Python по умолчанию и должна быть установлена отдельно.

Многие проекты зависят от библиотек и других зависимостей, и установка каждой из них может быть утомительной и отнимать много времени.

Именно здесь на помощь приходит файл requirements.txt. Это файл, содержащий список пакетов или библиотек, необходимых для работы над проектом, которые желательно установить перед запуском. Это обеспечивает согласованность среды и облегчает совместную работу.

Формат файла requirements.txt

Файл requirements.txt представляет собой текстовый файл, используемый в Python-проектах для указания списка зависимостей и их версий.

Каждая строка в этом файле представляет одну зависимость и имеет формат имя_пакета==версия, где имя_пакета — это название библиотеки или пакета Python, а версия — это желаемая версия этой зависимости.

Этот файл часто используется с инструментами управления пакетами, такими как pip, для автоматической установки и управления зависимостями проекта.

Ключевые термины

Я уже упоминал несколько терминов, которые вы, возможно, не знаете. Вот что они означают:

  • Зависимости — это программные компоненты, которые необходимы программе для корректной работы. Это могут быть библиотеки, фреймворки или другие программы.
  • Пакеты — это способ объединения связанных зависимостей. Они облегчают установку и управление зависимостями.
  • Виртуальная среда — это каталог, содержащий копию интерпретатора Python и все пакеты, необходимые для конкретного проекта.
  • Pip — это менеджер пакетов для Python. С помощью pip можно устанавливать и удалять пакеты Python, а также управлять ими.

Как создать файл requirements.txt

Для создания файла зависимостей необходимо настроить виртуальную среду. Если вы используете PyCharm, то виртуальная среда уже настроена (.venv). Но при работе с кодом Visual Studio вам придется создавать виртуальную среду самостоятельно.

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

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

$ cd folder-name #cd - change directory

В этой команде замените ‘folder-name’ на имя каталога, к которому требуется получить доступ.

Переход к нужной директории при помощи команды cd

Далее выполните эту команду:

$ pip freeze > requirements.txt

И вы увидите, что появился файл requirements.txt

Изображение нужного нам файла в директории проекта

А вот содержимое только что созданного файла requirements.txt:

Содержимое файла зависимостей

На скриншоте видны зависимости, используемые в нашем окружении, а также их версии.

Как работать с файлом requirements.txt

Теперь, когда у нас есть файл зависимостей, видно, что он содержит длинный список различных пакетов.

Для работы с пакетами необходимо их установить. Это можно сделать с помощью командной строки или терминала.

Введите эту команду:

pip install -r requirements.txt

Установка будет выглядеть следующим образом:

Установка пакетов, присутствующих в файле requirements.txt

Теперь, когда все зависимости установлены, можно работать с файлом requirements.txt.

Пример использования файла requirements.txt

В этом примере мы будем работать с двумя библиотеками,  beautifulsoup4 и requests, чтобы обрабатывать нужную нам информацию с сайта.

Библиотеки для данного примера в файле requirements.txt

Мы видим, что в файле requirements.txt уже присутствуют обе библиотеки и указаны их версии, так что мы можем работать с ними.

Импортируйте библиотеку BeautifulSoup из пакета с именем bs4 (beautifulsoup4), а также импортируйте библиотеку requests в ваш Python-код.

from bs4 import BeautifulSoup
import requests

Для получения информации из сайта мы используем метод .get() библиотеки requests.

web_data = requests.get("https://www.lithuania.travel/en/category/what-is-lithuania", headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"})

Теперь, когда мы получили нужные нам данные, передадим их в bs4 для дальнейшей обработки.

soup = BeautifulSoup(web_data.content, features="html.parser")

Нам нужен первый элемент с тегом p.

news_info = soup.findAll("p")[0]
print(news_info.text

Вот весь код целиком:

from bs4 import BeautifulSoup
import requests
web_data = requests.get("https://www.lithuania.travel/en/category/what-is-lithuania", headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"})
soup = BeautifulSoup(web_data.content, features="html.parser")
news_info = soup.findAll("p")[0]
print(news_info.text)

И вот результат запуска программы:

Для чего нужен файл requirements.txt

  • Управление зависимостями. Перечисление зависимостей проекта в файле requirements.txt позволяет легко увидеть, какие пакеты и в каких версиях требуются.
  • Совместное использование проекта с другими пользователями. Если вы предоставляете проект другим пользователям, то можете включить в него файл requirements.txt, чтобы они могли легко установить необходимые пакеты. Это поможет сэкономить время и убедиться в том, что все используют одинаковые версии библиотек и пакетов.

Заключение

В статье мы разобрали, как создать файл requirements.txt, и рассказали о преимуществах его использования.

Вам также следует поработать с зависимостями самостоятельно для закрепления материала.

Перевод статьи «Python Requirements.txt – How to Create and Pip Install Requirements.txt in Python».