Что такое 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’ на имя каталога, к которому требуется получить доступ.

Далее выполните эту команду:
$ pip freeze > requirements.txt
И вы увидите, что появился файл requirements.txt

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

На скриншоте видны зависимости, используемые в нашем окружении, а также их версии.
Как работать с файлом requirements.txt
Теперь, когда у нас есть файл зависимостей, видно, что он содержит длинный список различных пакетов.
Для работы с пакетами необходимо их установить. Это можно сделать с помощью командной строки или терминала.
Введите эту команду:
pip install -r requirements.txt
Установка будет выглядеть следующим образом:

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

Мы видим, что в файле 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=)
Теперь, когда мы получили нужные нам данные, передадим их в 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=) 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, и рассказали о преимуществах его использования.
Вам также следует поработать с зависимостями самостоятельно для закрепления материала.
pip freeze requirements txt
pip freeze requirements.txt — команда, которая позволяет создать текстовый документ, в котором перечислены все установленные и необходимые для работы Python приложения программные пакеты.
Самый распространенный веб-фреймворк на Python — Django, requirements.txt всегда используется при запуске Django на сервере.
Список всех пакетов можно посмотреть выполнив pip freeze — стандартный вывод производится на экран. Обычно эту информацию сохраняют в файл.
Файл оставляется в корне приложения, он оказывается нужен если проект переносится на другой сервер.
Глобальная и локальная установка пакетов через pip
Если команду выполнить авторизовавшись на сервере по ssh она выдаст список модулей установленных с помощью pip в систему глобально.
Приложения обычно запускаются в своём виртуальном окружении и со своим набором модулей. Если используется виртуальное окружение, то прежде всего нужно его активировать.
Когда имя виртуального окружения неизвестно — его можно попробовать найти выполнив в каталоге приложения find . -name activate. activate это бинарный файл активирующий окружение. Имя самого окружения будет на два уровня выше в иерархии каталогов чем файл activate.
Пример приведен на скриншоте:

Здесь окружение называется DjangoProject, оно найдено с помощью find. Затем активировано через source. После активации работа с модулями python выполняется не глобально, а в виртуальном окружении.
На скриншоте ниже представлен пример установки модуля Django в вирутальное окружение DjangoProject.

Через pip freeze выведен список установленных модулей (три из них поставились по зависимостям). Потом вывод сохранен в файл с именем requirements.txt.
Установка модулей из файла в чистое окружение выполняется командой pip install -r requirements.txt
Далее рассмотрим самую распространенную ситуацию при которой может потребоваться pip freeze и requirements.txt — перенос сайта на Django на другой сервер.
Перенос сайта на Django на другой сервер с pip freeze и requirements.txt
На сервере, с которого осуществляется перенос, выполняем следующую команду указывая путь к файлу, в котором будет сохранена информация которая потребуется для корректной работы проекта
Если используется виртуальное окружение — команду нужно выполнять в нем.
Виртуальное окружение для любого проекта можно активировать выполнив source /project-folder/bin/activate
Затем копируются файлы приложения и requirements.txt. При необходимости на новом сервере создается виртуальное окружение. На новом сервере должна быть такая же версия Python и желательно такой же дистрибутив Linux.
Создаются такие же каталоги, виртуальное окружение, настраивается веб-сервер. Примеры настройки веб-сервера можно посомтреть в материалах по ссылкам в конце статьи.
Установка всех пакетов по списку в новое окружение на новом сервере производится при выполнении
Внесение изменений в requirements.txt вручную является не самой лучшей практикой.
Автоматическая установка пакетов из этого файла в большинстве случаев окажется невозможна.
Что может потрбоваться дополнительно именно для Django
Часто после переноса проект запускается, статическое содержимое (изображения, стили) при этом не отдается
Чтобы решить этот вопрос нужно выполнить команду
Она позволяет собрать статику в STATIC_ROOT.
При этом если существуют файлы с одинаковым именем обработан будет только один из них (какой файл использует сайт можно выяснить при помощи findstatic — используется:
django-admin.py findstatic /path/to/the/folder
В выводе будут все файлы изображений, CSS стилей и т.п.; также команду можно запускать с ключом —first .
В этом случае в вывод попадет только первое вхождение, далее поиск прекратится.
В dev режиме проект запускается с указанием файла django-admin.py и имени проекта
python django-admin.py startproject projectname
Для запуска в рабочем режиме обычно используется gunicorn или uwcgi в качестве сервера приложений и Nginx в качестве веб-сервера.
Читайте про запуск проекта на Python с помощью gunicorn и про деплой Flask с uwsgi
Файл requirements.txt в Python и как его создать
requirements.txt — это простой текстовый файл, который содержит перечень всех модулей и пакетов, необходимых для корректной работы вашей программы. Создавая файл Python requirements.txt , вы избавляете себя от необходимости искать и устанавливать все необходимые модули вручную.
Из статьи вы узнаете о том, как создать файл requirements.txt , о его преимуществах и особенностях использования.
Преимущества использования файла зависимостей
- Возможность отслеживать актуальный список всех модулей и пакетов Python, используемых в вашем проекте.
- Облегчение процесса установки недостающих компонентов.
- Удобство совместной работы. Если на ПК другого пользователя отсутствуют нужные модули, они будут быстро загружены из файла requirements.txt , обеспечив беспроблемный запуск программы.
- Если вы захотите удалить, добавить или обновить модуль, изменения будет достаточно внести только в файл requirements.txt .
- При загрузке requirements.txt , GitHub проверяет зависимости на наличие конфликтов, и в некоторых случаях устраняет уязвимости.
Как создать файл зависимостей
Для этого вам достаточно перейти в корневой каталог проекта, где хранятся ваши .py -файлы, и создать текстовый документ requirements.txt . Важно убедиться, чтобы название было именно таким.
Также этот файл может быть сгенерирован автоматически с помощью следующей команды:
pip freeze > requirements.txt
Она возвращает список всех установленных модулей с указанием версий и помещает их в текстовый файл. Обратите внимание, что pip freeze подразумевает использование виртуальной среды для текущего проекта. В противном случае, список зависимостей может включать в себя и те пакеты, которые установлены в другие виртуальные среды.
Дополнительный вариант использования этой команды, который возвращает только локальные установленные пакеты:
pip freeze —local
Добавление модулей в файл
После создания файла его необходимо заполнить названиями модулей и их версиями. Самый простой способ — сделать это вручную. Вот пример содержимого requirements.txt :
matplotlib==3.2.1 numpy==1.18.5 pandas==1.0.4 tensorflow==2.3.1
Перечислив все зависимости, сохраняем файл и закрываем его.
Второй способ — команда pip freeze > requirements.txt , которая работает, даже если файл уже существует. Его пустое содержимое будет заполнено списком пакетов так же, как и при генерации нового файла.
Установка модулей из файла
Для того чтобы установить пакеты из requirements.txt , необходимо открыть командную строку, перейти в каталог проекта и ввести следующую команду:
pip install -r requirements.txt
Если вы хотите обновить компоненты вместо их повторной установки, используйте команду pip install -U -r requirements.txt .
Как поддерживать requirements.txt в актуальном состоянии
Если вы уже создали файл с зависимостями ранее, но по какой-то причине не обновляли его содержимое, волноваться не стоит. Выполните следующие шаги:
- Выведите список устаревших модулей с помощью pip list —outdated .
- Обновите выведенные пакеты вручную с помощью pip install -U PackageName или автоматически, используя pip install -U -r requirements.txt .
- Убедитесь, что ваша программа работает корректно.
- Используйте pip freeze > requirements.txt , чтобы актуализировать содержимое файла с необходимыми внешними зависимостями.
Таким образом вы сможете без проблем обновить информацию об используемых установленных пакетах, даже если в течение определенного времени не занимались управлением зависимостями.
Помните, что постоянное обновление файла requirements.txt помогает избежать многих проблем, связанных с устаревшими или отсутствующими модулями или пакетами. Как следствие, вы обеспечите корректную работу всех ваших сборок на любых ПК.
Как еще можно создать файл зависимостей?
Можно воспользоваться библиотекой pipreqs , которая сделает все за нас. Её запуск в командной строке сгенерирует файл с зависимостями:
$ pipreqs /home/project/location Successfully saved requirements file in /home/project/location/requirements.txt
При этом никто не запрещает вновь обратиться к pip freeze или заполнению документа вручную.
Советы по использованию файла требований
- Всегда используйте pip freeze , чтобы поддерживать список внешних зависимостей в актуальном состоянии.
- Храните в requirements.txt только необходимые модули и пакеты. В противном случае файл может получиться слишком большим и нечитаемым, а неиспользуемые компоненты будут лишь впустую тратить ресурсы.
- Сохраняйте файл с зависимостями в репозитории проекта, чтобы им могли пользоваться другие люди.
- Используйте pip install -r requirements.txt , чтобы автоматически установить все модули, необходимые для работы программы.
- Поддерживайте список зависимостей в актуальном состоянии, чтобы обеспечить полную работоспособность проекта на различных машинах.
Заключение
Мы рассказали вам о том, что представляет собой файл requirements.txt в Python и как его создать. Более того, в материале были разобраны преимущества его использования и практические рекомендации.
Ведение файла requirements.txt является неотъемлемой частью управления зависимостями проекта, которая в конечном итоге избавляет от ряда возможных проблем как программистов, так и конечных пользователей.
Установка пакетов requirements.txt
Возник вопрос, если на «новой» машине отсутствует подключение к интернету (конечно же можно в ручную загрузить каждый пакет, после чего так же установить). Однако если в проекте используется ни один десяток пакетов, то это займет достаточно много времени. Есть ли способ к примеру загрузить все пакеты ссылаясь на requirements.txt в директорию, а после из директории их установить.
Отслеживать
задан 16 мая 2020 в 17:34
1,439 1 1 золотой знак 11 11 серебряных знаков 20 20 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можно создать virtual environment, как это делают IDE и выгрузить:)
А можно просто взять уже сделанную из пайчарма, например
Отслеживать
ответ дан 17 мая 2020 в 8:25
336 1 1 серебряный знак 5 5 бронзовых знаков
- python
- python-3.x
- pip
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.17.3574