Упаковка Python: диски против tarball (tar.gz)
Преимущество колес над яйцами ясно (см. раздел, почему не яйцо? https://pypi.python.org/pypi/wheel).
Однако мне не совсем понятно, в чем преимущество использования колес над tar.gz
. Возможно, мне не хватает чего-то очевидного, как "они одинаковы".
Как я вижу, оба они могут быть установлены непосредственно с помощью pip
(даже в Windows), имеют аналогичный размер, и когда упаковка требует аналогичных усилий.
Это звучит для меня как вопрос, который вы можете получить, обосновывая методологию упаковки.
EDIT:
Просто нашел пример, где tar.gz
может быть лучше, чем колеса. CherryPy (https://pypi.python.org/pypi/CherryPy) предоставляет колеса только для Python 3.x, поэтому, если вы хотите, чтобы локальный репозиторий обслуживал CherryPy для Python 2.7 и 3.x, кажется, имеет смысл хранить архив. Это верно? (просто для того, чтобы добавить к обсуждению пару обоснований, основанных на "case-based" )
Ответы
Ответ 1
Это ответ на это мне (прямо с колеса PEP):
Python нужен пакетный формат, который проще установить, чем sdist. Пакеты Python sdist определяются и требуют distutils и setuptools строить системы, запускать произвольный код для сборки и установки, и перекомпилировать код, чтобы он мог быть установлен в новый virtualenv. Эта система создания сборки сложна медленно, трудно поддерживать и препятствовать инновациям как в системах сборки, так и в установщиках.
Wheel пытается исправить эти проблемы, предоставив более простой интерфейс между системой сборки и установщиком. Колесная двойная формат пакета освобождает установщиков от необходимости знать о сборке система, экономит время, амортизируя время компиляции во многих установках, и устраняет необходимость установки системы сборки в целевой окружающая среда.
https://www.python.org/dev/peps/pep-0427/#rationale
Обратите внимание, что tarballs, о которых мы говорим, это то, что называется "sdists" выше.
Ответ 2
От Колеса Python
Преимущества колес
• Более быстрая установка для чистых пакетов python и native C.
• Избегает выполнения произвольного кода для установки. (Avoids setup.py)
• Установка расширения C не требует компилятора в Windows или OS X.
• Позволяет улучшить кэширование для тестирования и непрерывной интеграции.
• Создает .pyc файлы как часть установки, чтобы убедиться, что они соответствуют используемому интерпретатору python.
• Более последовательная установка на платформах и машинах.
Убедитесь, что установлено колесо.
pip install wheel