Все требования в одном месте – 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
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Установка пакетов requirements.txt
Возник вопрос, если на «новой» машине отсутствует подключение к интернету (конечно же можно в ручную загрузить каждый пакет, после чего так же установить). Однако если в проекте используется ни один десяток пакетов, то это займет достаточно много времени. Есть ли способ к примеру загрузить все пакеты ссылаясь на requirements.txt в директорию, а после из директории их установить.
Отслеживать
задан 16 мая 2020 в 17:34
1,437 1 1 золотой знак 13 13 серебряных знаков 21 21 бронзовый знак
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.3.8.5973
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 и что он делает в Python?
Файл requirements.txt в Python позволяет отслеживать модули и пакеты, используемые в ваших проектах. Проще говоря, файл requirements.txt — это просто файл .txt, в котором отслеживаются все требования к вашему пакету и версии пакета.
Это упрощает установку необходимых пакетов, как для себя, так и для других пользователей вашего кода. Смотреть на эти требования гораздо проще, чем смотреть на разные фрагменты кода, чтобы попытаться собрать их вместе.
Чтобы поделиться своим проектом, чтобы другой человек мог использовать его с теми же зависимостями, что и вы, без проблем. Это особенно полезно, потому что файл также отслеживает версии этих библиотек, гарантируя соблюдение минимальных требований!
Как создать файл requirements.txt в Python
Вы можете просто создать файл .txt, содержащий все ваши требования, менеджер проекта pip на самом деле значительно упрощает создание файла требований.
При работе в виртуальной среде вы можете просто использовать следующую команду:
pip freeze > requirements.txt
Когда вы запустите эту команду, в каталоге, в котором вы работаете, будет создан новый файл с именем requirements.txt . В этом файле будут перечислены различные пакеты и модули в вашей виртуальной среде. Это действительно все, что вам нужно!
В том числе, запуск этой команды также будет включать в файл номера версий пакетов.
Как установить все пакеты из файла requirements.txt с помощью Python
Главное преимущество в том, что каждый пользователь файла requirements.txt может установить все необходимые библиотеки и модули одной командой.
Если в корневой папке проекта есть файл requirements.txt , вы можете запустить команду ниже, чтобы установить все пакеты в файле:
pip install -r requirements.txt
Эта команда прочитает файл и установит все пакеты в файле. Ваш терминал отобразит список всех установленных библиотек и отобразит все ошибки, если они есть.
Как поддерживать файл requirements.txt в Python в актуальном состоянии
Теперь, когда вы создали файл requirements.txt , вам может быть интересно, как вы будете его поддерживать. Если вы хотите проверить, какие пакеты устарели, вы можете использовать следующую команду:
pip list --outdated
В нем будут перечислены все пакеты, в которых ваша версия пакета устарела, с вашей версией и самой последней версией.
Чтобы обновить пакет до последней версии, вы можете использовать следующую команду:
pip install -U package_name
package_name - это имя вашего пакета
Это обновит вашу версию до последней версии. Как только это будет сделано, вы можете повторно заморозить свои требования, повторно запустив команду:
pip freeze > requirements.txt
Выберите метод управления версиями для необходимых библиотек. Номера версий могут быть определены строго, либо нет.
Строгое равенство library==1.0.1
Больше или равно library>=1.0.1
Совместимая версия library~=1.0.1