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 подскажет развёрнутый ответ в реальном времени.