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已成为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);
}
}
}
有关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”),是平台特定的,只能在匹配的系统上工作。这就是为什么某些软件包为不同平台提供多个轮子文件的原因。