Нужно ли добавлять в requirements.txt зависимости зависимостей (рекурсивно)?

439 просмотра
0
0 Комментариев

У меня есть небольшой репозиторий, в котором хранятся принятые в команде стандарты кодирования Python в форме конфигурации pylint. Также там есть инструкция и requirements.txt для установки через pip:

pip install -r requirements.txt

Очевидно, что в requirements.txt должен быть pylint. Но официальная документация по pylint явно указывает, что для работы pylint необходим ещё и пакет astroid.

Я убедился, что команда pip install pylint успешно устанавливает astroid и остальные зависимости:

До:

(venv)➜  pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)

После:

(venv)➜  pip list
astroid (1.4.6)
colorama (0.3.7)
lazy-object-proxy (1.2.2)
pip (7.1.2)
pylint (1.5.6)
setuptools (18.2)
six (1.10.0)
wheel (0.24.0)
wrapt (1.10.8)

Вроде бы всё и так работает. Но ведь зависимость по какой-то причине явно указана в документации, и даже дана отдельная инструкция по установке.

Вопрос: должен ли я добавить astroid и прочие зависимости в requirements.txt? Есть ли стандарт, который даёт однозначный ответ на этот вопрос?


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

2 Answers

Python Опубликовано 10.12.2018
0

1) Не удалось найти PEP, регламентирующего это.

2) Зато есть документация к pip. Цитата:

Requirements files are used to hold the result from pip freeze for the
purpose of achieving repeatable installations. In this case, your
requirement file contains a pinned version of everything that was
installed when pip freeze was run.

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

Using pip freeze to generate the requirements file will ensure that
not only the top-level dependencies are included but their
sub-dependencies as well, and so on.

Если вы используете pip freeze для генерации файла зависимостей, то туда помещаются не только зависимости верхнего уровня, но также и зависимости зависимостей, и т. д.

То есть файл зависимостей призван собрать зависимости для всего окружения, для всего-всего. Напротив, если использовать install_requires в setup.py (то есть только для одного приложения), то в нем не рекомендуется указывать под-зависимости. Источник — http://python-packaging-user-guide.readthedocs.io/en/latest/requirements/#requirements-files

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

Нет, не нужно.
Если разработчики других пакетов указали у себя зависимости(а обычно это так), то pip сам установит их.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up