Как установить requirements txt python
Перейти к содержимому

Как установить requirements txt python

  • автор:

requirements.txt в Python. Установка и версионирование зависимостей.

В своих проектах на Python я конечно пользуюсь сторонними пакетами. Их легко установить с помощью pip install, но что делать если проект нужно распространять или показывать все в видео (как делаю я на своем канале Azzrael Code). Или если нужно чтобы в проекте использовались пакеты нужных версий.

В стандартном менеджере пакетов pip, который идет в комплекте с установочными пакетом Python, есть возможность перечислить необходимые пакеты в файле requirements.txt . И не просто перечислить, а также указать какие конкретно версии пакетов нужны (или даже выбрать диапазон версий, или исключить какие-то версии). А затем установить все эти пакеты одной командой python -m pip install -r requirements.txt. Подробнее о том как я использую requirements.txt в видео:

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

Кстати совсем не обязательно называть файл с зависимостями именно requirements.txt. Можно использовать любое имя. А requirements.txt просто общепринятое название, ну и IDE могут ожидать такого именования.

Как установить зависимости с использованием requirements.txt

Документация по requirements.txt

  • https://pip.pypa.io/en/stable/user_guide/#requirements-files
  • https://pip.pypa.io/en/stable/cli/pip_install/#requirements-file-format

Если у вас есть вопросы или есть мнения как сделать лучше, то пишите в комментария к python случайное

Все требования в одном месте – requirements.txt

Обычно для запуска проекта требуется несколько внешних пакетов.

Чтобы каждый раз с болью в сердце не собирать их, список этих пакетов принято поставлять вместе с исходным кодом. Принято селить весь список необходимых пакетов в файле requirements.txt в корне проекта. Формат этого файла простой: по одному пакету на строку.

Заморозка пакетов

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

Это может привести к проблемам: скажем, проект разрабатывался на версии 1.2. Через полгода потребовалось развернуть его заново, пип установил последнюю версию – 1.5. Эта версия может быть не совместима со старой, тогда код сломается.

Например, такая история была с модулем vk : в версии 1.5 нужно было использовать класс vk.api.APISession , а в версии 2.0 – vk.OAuthAPI . Понятное дело, программа, которая использует не ту версию модуля, ломалась – старого класса-то нет.

Чтобы такого не происходило, пакеты принято замораживать – указывать версию пакета вместе с названием. Пип поддерживает такой синтаксис: модуль==версия .

Вот часть requirements.txt из Девмана:

django==1.10.2 pillow==3.3.0 gunicorn==19.6.0 sorl-thumbnail==12.3 ptpython==0.35 

Получить все версии пакетов, установленных на вашем компьютере, можно командой pip freeze :

$ pip freeze django==1.10.2 pillow==3.3.0 gunicorn==19.6.0 sorl-thumbnail==12.3 ptpython==0.35 . 

Все зависимости заморозить и в requirements.txt

Установка

Все пакеты из requirements.txt можно установить одним махом, пип такое умеет: pip install -r requirements.txt .

Зависимости зависимостей

К сожалению, правильное заполнение requirements.txt не решает все проблемы с зависимостями и версиями.

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

Проблема в том, что если модуль requests не заморожен в исходниках модуля vk , через полгода всё опять может сломаться: версия vk будет правильная, а requests – нет.

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

Решение этой проблемы рассмотрим в другой раз. Главное – быть начеку.

Попробуйте бесплатные уроки по Python

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

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Python создание и установка из requirements.txt

Для того чтобы создать список установленных пакетов в виртуальном окружении python (env/venv) и сохранить результат в файл requirements.txt, необходимо выполнить команду:

pip freeze > requirements.txt

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

pip install -r requirements.txt

Понятное дело, перед выполнением любой из команд, необходимо активировать виртуальное окружение, например, если виртуальное окружение создано в каталоге /script/venv то команда будет следующая:

переходим в каталог script:

cd /script

активируем виртуальное окружение:

source venv/bin/activate

чтобы выйти из виртуальное окружения, выполняем команду:

deactivate

Установка пакетов 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.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *