Подтвердить что ты не робот

Упаковка 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" )

4b9b3361

Ответ 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