- pyproject.toml: [tool.setuptools.packages.find] where=[.] include=[world_sync*] namespaces=false — 把「仓库根从不作为包」固化为配置约束,杜绝双路径歧义回归。 - 承接 9f97d58(删除仓库根 157 行转发 __init__.py)。 - 实测更正:sys.path=modules/(模块父目录)场景 在删除前(01941aa 沙箱)与删除后同样 ImportError(解析到 init/ 目录), 非本次删除引入的回归;宿主真实解析路径为 venv editable finder → pkgs 副本内层包,实测 OK。 证据见 projects/pbls/docs/02-develop/m11b2a-1-root-package-disposition.md §4(rev2)。
29 lines
1.5 KiB
TOML
29 lines
1.5 KiB
TOML
[build-system]
|
||
requires = ["setuptools>=45", "wheel"]
|
||
build-backend = "setuptools.build_meta"
|
||
|
||
[project]
|
||
name = "world_sync"
|
||
version = "1.0.0"
|
||
requires-python = ">=3.8"
|
||
dependencies = ["sqlor", "bricks_for_python"]
|
||
|
||
# 打包面显式收紧(M11b-2a-1 rev2,响应 QC #14 改法 (b) 的合规部分)
|
||
# ---------------------------------------------------------------------------
|
||
# 事实基线(实测,见 projects/pbls/docs/02-develop/m11b2a-1-root-package-disposition.md §4.3):
|
||
# find_packages(where=".", include=["world_sync*"]) == ['world_sync']
|
||
# 即 setuptools 只发现内层包 ./world_sync/(仓库根 "." 本身从不被当作包,
|
||
# 删除前根级 __init__.py 也从未进入 wheel/egg-link 打包面)。
|
||
# 这里显式写死 namespaces=false,目的是把该事实固化为配置约束而非巧合:
|
||
# ① 防止未来有人往仓库根/`init/`/`json/`/`models/` 等数据目录放 __init__.py
|
||
# 或开启 namespace 发现,使 `world_sync` 出现两个候选落点(双路径歧义);
|
||
# ② 保证 `pip install -e` 生成的 __editable___world_sync_*_finder.MAPPING
|
||
# 恒指向 <repo>/world_sync(内层包目录),与宿主 apps/scense 实测一致。
|
||
# 唯一受支持的导入根 = 仓库根目录(或 editable finder 映射),
|
||
# 不支持把 modules/(模块父目录)放进 sys.path —— 该场景实测 ImportError,
|
||
# 且删除根包前后同样失败(详见处置文档 §4.2/§4.3)。
|
||
[tool.setuptools.packages.find]
|
||
where = ["."]
|
||
include = ["world_sync*"]
|
||
namespaces = false
|