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

如何通过pyproject.toml在Python包中包含.json文件?

解决Python打包时JSON文件被忽略的问题

你的问题源于两处关键配置错误,修正后即可正常包含JSON文件:

1. 包名拼写错误

项目结构中是src/align目录,但你的pyproject.toml里写的是src.multiply_align,这会导致setuptools找不到对应子包,自然不会包含其中的JSON文件。

2. Package-Data路径配置错误

package-data的路径是相对于对应包的根目录,而非项目根目录的绝对路径。比如src.align包下的params.json,直接写文件名即可,不需要前缀src/align/。

修正后的pyproject.toml内容

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

[project]
name = "myproject"
version = "0.0.1"
description = "description"
readme = "README.md"
requires-python = ">=3.9"
license = {file = "LICENSE.txt"}
authors = [
    {name = "John Doe"}
]
classifiers = [
    "Programming Language :: Python :: 3"
]

[project.scripts]
myproject = "src.main:main"

[tool.setuptools]
packages = ["src", "src.align"]  # 修正包名
include-package-data = true

[tool.setuptools.package-data]
"src.align" = ["params.json"]  # 修正路径,直接写包内文件名

额外验证与优化建议

  1. 清理旧构建缓存后重新安装:运行pip install --force-reinstall .,或先删除build/、dist/和*.egg-info目录再执行安装。
  2. 安装后可到conda环境的Lib/site-packages/src/align目录下,确认params.json是否存在。
  3. 代码中读取文件时,建议使用包相对路径避免硬编码问题:
import json
from importlib.resources import files

# 读取src/align/params.json
params_path = files("src.align").joinpath("params.json")
with open(params_path, "r") as f:
    params = json.load(f)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:22:44