使用 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"
我有以下项目结构:
dir_a
- foo_b.cpp
- foo_b.h
- pyproject.toml
- foo_b.sip <-- 这里我尝试 %import foo_a.sip
- test_b.py
dir_b
- foo_a.cpp
- foo_a.h
- pyproject.toml
- foo_a.sip
- test_a.py
如果我删除 [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 安装所有东西对我来说是最好的方法。
我在 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"
我有以下项目结构:
dir_a
- foo_b.cpp
- foo_b.h
- pyproject.toml
- foo_b.sip <-- 这里我尝试 %import foo_a.sip
- test_b.py
dir_b
- foo_a.cpp
- foo_a.h
- pyproject.toml
- foo_a.sip
- test_a.py
如果我删除 [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 安装所有东西对我来说是最好的方法。