requirements.txt vs wheel
requirement.txt vs wheel
- requirements.txt
- это список пожеланий
Например:
requirementx.txt не содержит сами пакеты, он говорит pip:
Note
“сходи в интернет и попробуй всё это собрать”
- wheel
- уже готовая коробка с пакетом
Например:
Внутри уже:
- код
- metadata
- иногда binaries
Поэтому requirements.txt часто бесит
flow requirements.txt
graph TD
A[requirements.txt]
--> B[pip]
B --> C[ищет пакеты]
C --> D[ищет зависимости]
D --> E{есть wheel?}
E -->|Да| F[install wheel]
E -->|Нет| G[compile source]
G --> H[ошибки]
flow wheel
graph TD
A[wheel]
--> B[готовый пакет]
B --> C[install]
C --> D[works]
Простая аналогия
requiremets.txt
список ингридиентов
wheel
готовая еда из магазина
Зачем нужен requirements.txt
Потому что:
- wheel может быть 100 файлов
- руками их неудобно хранить
- requirements.txt удобно читать
- удобно обновлять версии
- удобно для git
И вот почему wheel кажется “лучше”
Потому что он:
- уже собран
- уже готов
- меньше build ошибок
Но:
- wheel не заменяет описание зависимостей
- requirements.txt всё равно нужен