You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python包Wheel文件未包含templates目录及根文件问题求助

Python Wheel打包问题解决方案

一、确保Wheel包含templates目录及根文件的方法

1. 先明确项目目录结构

建议将templates移至Python包内部(后续加载资源更方便),参考结构如下:

OraTAPI/
├── OraTAPI/          # 核心Python包目录(必须包含__init__.py)
│   ├── __init__.py
│   └── templates/
│       └── *.html
├── README.md
├── LICENSE
└── pyproject.toml

2. 用pyproject.toml配置现代打包规则

放弃老版setup.py纯脚本配置,改用pyproject.toml(setuptools官方推荐),配置如下:

基础构建配置

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

项目元数据配置(解决README、LICENSE被移到data目录的问题)

将根文件声明为项目元数据,而非普通数据文件:

[project]
name = "OraTAPI"
version = "1.0.6"
readme = "README.md"
license = {file = "LICENSE"}
# 按需添加description、authors等其他元数据

配置包含templates目录

  • 若templates在包内(如上述结构):
[tool.setuptools.package-data]
OraTAPI = ["templates/**/*"]  # **/*匹配所有子目录及文件

[tool.setuptools]
include-package-data = true
  • 若templates必须放在项目根目录:
[tool.setuptools.data-files]
"OraTAPI" = ["templates/**/*"]  # 安装后会放到site-packages/OraTAPI目录下

3. 修正MANIFEST.in(适配sdist,辅助wheel打包)

若需确保sdist也包含目标文件,在项目根目录创建/修改MANIFEST.in:

include README.md LICENSE
recursive-include OraTAPI/templates *  # 包内templates的情况
# 若templates在根目录则改为:recursive-include templates *

二、检查打包过程中可能遗漏的步骤

  1. 清理旧打包缓存:删除dist/、*.egg-info/、build/目录,避免旧配置残留导致新打包不生效。
  2. 使用官方推荐的打包命令:执行python -m build生成wheel和sdist,不要直接用python setup.py bdist_wheel,前者会严格遵循pyproject.toml配置。
  3. 验证wheel内容:打包完成后,用unzip -l dist/OraTAPI-1.0.6-py3-none-any.whl查看wheel内的文件结构,确认templates和元文件位置是否正确。
  4. 测试安装效果:执行pip install dist/OraTAPI-1.0.6-py3-none-any.whl,然后查看site-packages/OraTAPI目录是否包含templates,用pip show -f OraTAPI可查看已安装文件列表。

内容的提问来源于stack exchange,提问作者avalon20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:31:02