WHL文件格式 - Python软件包分发

WHL扩展的主要特征 - 仔细查看Python Wheel包装格式

WHL包装格式

在Python开发生态系统中,有效的软件包分布至关重要,WHL(Wheel)文件已成为可靠,快速分发和安装Python包装的标准解决方案。

Python Wheel存档信息

WHL是Python的建立包装格式,包含以预编译状态安装所需的所有文件。从本质上讲,WHL文件是一个具有特殊目录结构和命名约定的 zip Archive ,它允许Python的软件包经理安装软件,而无需在最终用户的系统上运行构建过程。由于其安装速度和可靠性更好,因此这种格式通常取代了许多Python产品的旧格式和源分布(.tar.gz)。

WHL文件的演变

2012年,PEP 427宣布了WHL格式,该格式正式称为“车轮”,以增强先前的鸡蛋格式。丹尼尔·霍尔斯(Daniel Holth)创建了它是为了解决Python包装生态系统的许多问题。当Python的软件包安装程序PIP在2013年初提供的1.4版Wheel安装功能时,该格式在使用中有了重大的上升。到2014年,主要的Python包装开始分发车轮文件,如今已成为Python软件包发行的事实上的标准。随着Python包装生态系统的进步,格式不断发展。最新的标准在PEP 600和PEP 621中概述。

WHL文件的结构

WHL文件本质上是邮政库,具有遵循Python包装规范的特定内部结构。在WHL文件中,您会找到编译的Python模块(.PYC文件),有关软件包的元数据以及该软件包功能所需的任何二进制扩展。该文件名本身遵循一个严格的惯例,该惯例编码重要信息:软件包名称,版本,Python兼容性标签和目标体系结构。这种结构化方法使Python的软件包管理人员可以快速确定车轮是否与目标系统兼容,而无需提取其内容。

WHL压缩方法

WHL文件采用与常规ZIP文件相同的压缩方法,因为它们是从根本上进行邮政档案。平衡压缩比和减压速度的Deflate算法最常用于压缩WHL文件的内容。此方法可以确保可以迅速安装软件包,同时保持适合分发的文件大小。这些文件与 Aspose.zip 之类的库兼容,该库使用多种压缩技术例如Deflate,Deflate64TM, BZIP2 等,促进了WHL包装的提取和生成。

WHL档案支持操作

使用 aspose.zip for python .net 之类的工具,开发人员可以以各种方式操纵WHL文件。可以创建车轮包装,可以检查内容,可以从WHL中提取文件,而无需安装,可以更改元数据,并且可以重新包装修改的轮子。需要调试问题,适应唯一环境或检查依赖项的Python软件包维护者将发现这些动作特别有用。 Python的标准工具链中包含了用于安装WHL文件,将源分布转换为车轮的其他命令以及验证轮套件的其他命令,其中还包括PIP和Wheel工具。

WHL文件 - 内部结构

WHL文件本质上是邮政库,具有遵循Python包装规范的特定内部结构。在WHL文件中,您会发现:

  • **编译Python模块:**可以直接加载而无需编译的预编译。
  • **软件包元数据:**有关包装作者,版本,依赖项和要求的信息
  • **二进制扩展:**包装功能所需的特定于平台的编译库
  • **结构化命名约定:**编码关键信息的文件名:
  • 包装名称
  • 版本号
  • Python兼容性标签
  • 目标体系结构(例如WIN_AMD64,MANELLINUX1_X86_64)

这个标准化的内部组织包括:

  • **root软件包内容:**实际Python代码和资源
  • **。dist-info目录:**包含元数据,例如元数据,车轮和记录
  • **。数据目录(可选):**保存非Python数据文件和资源

这种结构化方法允许快速验证和安装软件包,同时通过哈希验证维护安全性。

WHL文件 - 内部结构

WHL文件和支持的受欢迎程度

由于其有效性和可靠性,WHL已成为Python包装的首选分布方法。现在,对于Python软件包索引(PYPI)上列出的几乎所有软件包,现在都可以访问车轮文件。这种格式得到了Python生态系统的充分支持,诸如PIP提供轮子优先于源分布之类的实用程序。不管编程环境如何,Python开发人员始终使用此格式,因为它可以与所有主要操作系统(包括Windows,MacOS和Linux)一起使用。

使用WHL文件的示例

WHL文件对于希望有效分发和安装软件包的Python开发人员至关重要。通过编程方式使用WHL文件允许开发人员自定义其软件包管理工作流程。在以下代码示例中,我们将探讨如何使用库来创建和提取WHL文件,并演示用于包装检查和修改的技术。这些示例将帮助您了解如何利用Python开发项目中的WHL文件,以使依赖性管理和部署更加顺畅。

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-Archives的其他信息

人们一直在问

1. 如何在Python中安装WHL文件?

要安装WHL文件,请使用pip命令:pip install filename.whl。该命令在所有平台上都可以使用,并且是在Python中安装轮套件的标准方法。如果您在虚拟环境中工作,请确保首先被激活。

2. 我可以创建自己的WHL文件以进行分发吗?

是的,您可以使用Python的构建工具创建WHL文件。首先,确保您的项目具有正确的设置。Py或pyproject.toml文件,然后在项目目录中运行python -m build -wheel。这将生成一个可以分配或上传到PYPI的DIST/ DITICTORY中的WHL文件。

3. WHL文件是特定于平台的吗?

这取决于软件包内容。 “纯Python”车轮(标有“ PY3”标签)在所有平台上都可以使用。但是,包含编译扩展的车轮(标有特定于平台的标签,例如“ win_amd64”或“ Manylinux”),是平台特定的,只能在匹配的系统上工作。这就是为什么某些软件包为不同平台提供多个轮子文件的原因。