Mediumpackaging
Что такое packaging (wheel, sdist)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Python packaging — дистрибутивы пакетов. Два типа: sdist (source distribution, .tar.gz) и wheel (.whl, pre-built binary).
# Создать sdist и wheel
pip install build
python -m build # → dist/mypackage-1.0.0.tar.gz и .whl
# Загрузить на PyPI
pip install twine
twine upload dist/*# pyproject.toml — build backend
[build-system]
requires = ["setuptools>=61", "wheel"]
build-backend = "setuptools.build_meta"- wheel (PEP 427) — формат
{name}-{version}-{python}-{abi}-{platform}.whl(напримерnumpy-1.24.0-cp310-cp310-manylinux2014_x86_64.whl); - universal wheel — pure Python (works on any Python 3);
- Для C extensions нужен wheel per platform;
cibuildwheel(CI для всех платформ); - Private index: DevPi, Artifactory, Nexus;
- Установка wheel быстрее (не нужна сборка).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.