WHL Package Format

В экосистеме разработки Python, где эффективное распределение пакетов имеет решающее значение, файлы WHL (колеса) стали стандартным решением для надежно и быстрого распределения и установки пакетов Python.

Информация о архиве колеса питона

WHL-это формат встроенного пакета для Python, который содержит все файлы, необходимые для установки в предварительно скомпилированном состоянии. По сути, файл WHL представляет собой ZIP -архив с специальной структурой каталогов и соглашением от именования, которая позволяет менеджерам пакетов Python устанавливать программное обеспечение, не требуя процесса сборки в системе конечного пользователя. Из -за своей лучшей скорости установки и надежности этот формат, как правило, вытесняет более старый формат и распределения источников (.tar.gz) для многих продуктов Python.

Эволюция файлов WHL

В 2012 году PEP 427 анонсировал формат WHL, который официально называется «колесо» в качестве улучшения в предыдущем формате яиц. Даниэль Холт создал его, чтобы решить ряд проблем с экосистемой упаковки Python. Когда PIP, установщик пакета Python, включал возможность установки колес в версии 1.4, которая была доступна в начале 2013 года, в формате был использован большой рост. К 2014 году основные пакеты Python начали распространять файлы колес, и сегодня они стали де -факто стандартом для распределения пакетов Python. С достижениями в экосистеме упаковки Python, формат продолжает развиваться; Самые последние стандарты изложены в PEP 600 и PEP 621.

Структура WHL -файлов

Файлы WHL по существу представляют собой архивы ZIP с определенной внутренней структурой, которая следует за спецификациями упаковки Python. Внутри файла WHL вы найдете скомпилированные модули Python (.pyc -файлы), метаданные о пакете и любые двоичные расширения, необходимые для функционирования пакета. Само имя файла следует строгому соглашению, которая кодирует важную информацию: имя пакета, версия, теги совместимости с Python и целевая архитектура. Этот структурированный подход позволяет менеджерам пакетов Python быстро определить, совместимо ли колесо с целевой системой без необходимости извлечения его содержимого.

Методы сжатия WHL

Файлы WHL используют те же методы сжатия, что и обычные файлы ZIP, потому что они являются фундаментально ZIP -архивами. Алгоритм дефляции, который уравновешивает коэффициент сжатия и скорость декомпрессии, чаще всего используется для сжатия содержимого файлов WHL. Этот метод гарантирует, что пакеты могут быть установлены быстро при сохранении размеров файлов, соответствующих распределению. Эти файлы совместимы с такими библиотеками, как aspose.zip , которые облегчают извлечение и генерацию пакетов WHL с использованием различных методов сжатия, таких как дефтат, дефтат64TM, BZIP2 и другие.

WHL Archive поддерживает операции

Используя такие инструменты, как aspose.zip для Python .net , разработчики могут манипулировать файлами WHL различными способами. Колесные пакеты могут быть созданы, можно проверить содержимое, файлы могут быть извлечены из WHL без установки, метаданные могут быть изменены, а модифицированные колеса могут быть переупакованы. Сопровождающие пакета Python, которым необходимо отлаживать проблемы, адаптировать пакеты для уникальных контекстов или изучение зависимостей, найдут эти действия особенно полезными. Дополнительные команды для установки файлов WHL, преобразования распределений источников на колеса и проверки колесных пакетов включены в стандартный инструмент Python, который также включает в себя инструменты PIP и колеса.

WHL -файл - внутренняя структура

Файлы WHL по существу представляют собой архивы ZIP с определенной внутренней структурой, которая следует за спецификациями упаковки Python. Внутри файла WHL вы найдете:

  • Скомпилированные модули Python: предварительно скомпилированные файлы .pyc, которые можно напрямую загружаться без компиляции
  • Метаданные пакета: Информация об авторе пакета, версии, зависимостях и требованиях
  • Бинарные расширения: Скомпилированные библиотеки, специальные для платформы, необходимые для функциональности пакета
  • Структурированное соглашение об именах: Имя файла, которое кодирует критическую информацию:
    • имя пакета
    • номер версии
    • Теги совместимости Python
    • Целевая архитектура (например, win_amd64, manylinux1_x86_64)

Эта стандартизированная внутренняя организация включает в себя:

  • Содержимое корневого пакета: Фактический код и ресурсы Python
  • . Dist-Info Directory: содержит файлы метаданных, такие как метаданные, колеса и запись
  • . Справочник данных (необязательно): Удерживает непитоны данных и ресурсы

Этот структурированный подход обеспечивает быстрое проверку и установку пакетов при сохранении безопасности посредством проверки хэша.

WHL -файл - внутренняя структура

Популярность файлов WHL и поддержки

Из -за своей эффективности и надежности WHL стал предпочтительным методом распределения пакетов Python. Файлы колес теперь доступны практически для каждого пакета, указанного в индексе пакета Python (PYPI). Этот формат полностью поддерживается экосистемой Python, причем такие коммунальные услуги, как PIP, предоставляя колеса, а не в распределении источников, где они доступны. Независимо от среды программирования, разработчики Python всегда используют этот формат, поскольку он работает со всеми основными операционными системами, включая Windows, MacOS и Linux.

Примеры использования файлов WHL

Файлы WHL необходимы для разработчиков Python, которые хотят эффективно распределять и установить пакеты. Работа с WHL -файлами программно позволяет разработчикам настраивать свой рабочий процесс управления пакетами. В следующих примерах кода мы рассмотрим, как использовать библиотеки для создания и извлечения файлов WHL, демонстрируя методы проверки и модификации пакетов. Эти примеры помогут вам понять, как использовать WHL -файлы в ваших проектах по разработке Python для более плавного управления зависимостями и развертывания.

Create WHL via C#

    using (var archive = new Archive())
    {
        archive.CreateEntry("entry_name1.dat", "input_file1.dat");
        archive.CreateEntry("entry_name2.dat", "input_file2.dat");
        archive.Save("result_archive.whl");
    }

Compress and encrypt data file using Archive.Save method via C#

    using (var whlFile = File.Open("EncrypedWithAES256.whl", FileMode.Create)) 
    { 
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read)) 
        { 
            using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$", EcryptionMethod.AES256)))) 
            { 
                archive.CreateEntry("alice29.txt", source); 
                archive.Save(whlFile); 
            } 
        } 
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Дополнительная информация о whl

Часто задаваемые вопросы

1. Как установить файл WHL в Python?

Чтобы установить файл WHL, используйте команду PIP: PIP установка FileName.whl. Эта команда работает на всех платформах и является стандартным способом установки колесных пакетов в Python. Если вы работаете в виртуальной среде, убедитесь, что она сначала активирована.

2. Могу ли я создать свои собственные файлы WHL для распространения?

Да, вы можете создавать файлы WHL, используя инструменты сборки Python. Сначала убедитесь, что ваш проект имеет надлежащий файл setup.py или pyproject.toml, затем запустите python -m Build -Wheel в каталоге проекта. Это будет генерировать файл WHL в каталоге DIST/ DIST, который вы можете распространять или загрузить в PYPI.

3. Являются ли WHL Files Files Specififice?

Это зависит от содержания пакета. Колеса «Pure Python» (отмечены тегом «py3») на всех платформах. Тем не менее, колеса, содержащие скомпилированные расширения (помеченные тегами для конкретной платформы, такими как «win_amd64» или «manylinux»), являются специфичными для платформы и будут работать только на подходящих системах. Вот почему некоторые пакеты предлагают несколько колесных файлов для разных платформ.