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 *
二、检查打包过程中可能遗漏的步骤
- 清理旧打包缓存:删除
dist/、*.egg-info/、build/目录,避免旧配置残留导致新打包不生效。 - 使用官方推荐的打包命令:执行
python -m build生成wheel和sdist,不要直接用python setup.py bdist_wheel,前者会严格遵循pyproject.toml配置。 - 验证wheel内容:打包完成后,用
unzip -l dist/OraTAPI-1.0.6-py3-none-any.whl查看wheel内的文件结构,确认templates和元文件位置是否正确。 - 测试安装效果:执行
pip install dist/OraTAPI-1.0.6-py3-none-any.whl,然后查看site-packages/OraTAPI目录是否包含templates,用pip show -f OraTAPI可查看已安装文件列表。
内容的提问来源于stack exchange,提问作者avalon20
相关产品推荐
相关产品推荐

