使用 python SIP 从单模块项目过渡到多模块项目

Transition from single to multi module project with python SIP

我在 foo_b 中导入 foo_a 时遇到问题。假设在两个 .toml 文件中定义的顶级包将被称为 foo.sip。 这意味着例如foo_b 的 pyproject.toml 看起来像这样:

# Specify sip v6 as the build system for the package.
[build-system]
requires = ["sip >=6, <7"]
build-backend = "sipbuild.api"

# Specify the PEP 566 metadata for the project.
[tool.sip.metadata]
name = "foo-foo_b"
requires-dist = "foo-foo_a"

# Configure the building of the project bindings.
[tool.sip.bindings.foo_b]
<dependencies ...>

[tool.sip.project]
sip-module = "foo.sip"

我有以下项目结构:

如果我删除 [tool.sip.project]

下的 sip-module 条目

sip-module = foo.sip

从 foo_a 的 .toml 文件中导入 foo_a

from foo import foo_a

在 test_a.py 中工作正常。但是,如果我尝试使用此条目构建包项目,则会出现以下错误:

ModuleNotFoundError: No module named 'foo.sip'

系统上的安装是使用 sip-install 完成的,首先是 dir_a,然后是 dir_b。

I tried to structure my package project like it is in this example more or less described

但我错过了什么?

在我发布的示例项目的 link 中,有一个创建 sdist 的步骤。必须首先安装 sdist 以准备创建顶层包。 对于 foo 示例,我执行了以下操作:

sip-module --sdist foo.sip
pip install foo_sip...tar.gz
cd dir_a
sip-install
cd ../dir_b
sip-install

更新: 从 sdist 和其他子项目构建一个轮子并使用 pip 安装所有东西对我来说是最好的方法。