(Wheel 格式) Python 的标准分发格式的生成规则规范

.whl 文件(Wheel 格式)是 Python 的标准分发格式,其生成规则主要遵循以下规范:


1. 文件名命名规则

.whl 文件名格式为:

复制代码
{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl

例如:numpy-1.22.3-cp39-cp39-win_amd64.whl

  • distribution :包名(如 numpy)
  • version :版本号(如 1.22.3)
  • build tag(可选):构建编号(通常省略)
  • python tag :支持的 Python 版本(如 cp39 表示 CPython 3.9)
  • abi tag :ABI 兼容性标记(如 none、cp39)
  • platform tag :平台标记(如 win_amd64、linux_x86_64、any)

2. 核心生成规则

(1)依赖工具

必须安装 setuptools 和 wheel:

bash 复制代码
pip install setuptools wheel
(2)项目结构要求
复制代码
my_package/
├── setup.py          # 必须
├── pyproject.toml    # (可选,现代项目推荐)
└── my_package/       # 包目录
    ├── __init__.py   # 必须(标识为 Python 包)
    └── module.py     # 你的代码
(3)setup.py 关键配置
python 复制代码
from setuptools import setup

setup(
    name="my_package",       # 包名(必须)
    version="0.1",           # 版本号(必须)
    packages=["my_package"], # 包含的包(或使用 find_packages())
    python_requires=">=3.6", # Python 版本要求(可选)
    install_requires=[],     # 依赖项(可选)
)
(4)生成命令
bash 复制代码
python setup.py bdist_wheel  # 生成 whl 文件到 dist/ 目录

或使用现代构建工具:

bash 复制代码
pip install build
python -m build --wheel      # 推荐方式(需 pyproject.toml)

3. 平台与兼容性标记

  • 纯 Python 包 :标记为 py3-none-any.whl
    (适用于所有 Python 版本和平台)
  • 平台特定包 :如 cp39-cp39-win_amd64.whl
    (需编译 C 扩展,依赖特定 Python 版本和操作系统)

4. pyproject.toml(现代项目推荐)

toml 复制代码
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "my_package"
version = "0.1"

5. 验证生成的 whl

检查文件内容:

bash 复制代码
unzip -l dist/my_package-0.1-py3-none-any.whl

应包含:

  • 包代码(如 my_package/__init__.py)
  • 元数据(如 *.dist-info/ 目录)

6. 注意事项

  1. 避免顶层代码 :setup.py 中不应有业务逻辑,仅用于配置。
  2. 版本号规范 :遵循 PEP 440(如 1.0.0、2.1.0rc1)。
  3. 跨平台 :纯 Python 包用 any 标记,C 扩展需分平台编译。

通过以上规则,可以生成符合标准的 .whl 文件,并通过 pip install 分发或安装。

相关推荐
GIS数据转换器15 分钟前
地下空间综合管廊运营管理平台
大数据·开发语言·人工智能·经验分享·perl
Wang's Blog5 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿6 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河6 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年6 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Williamtym6 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
DongQiShanRen7 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室7 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
CCblandy7 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
quantdash_cc7 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash