pytest 和 pybind11:无法导入 C++ 扩展

pytest and pybind11: can't import c++ extension

我使用 pybind11 将模块 _cxx 添加到现有 python 库 libaliba._cxx.func 在我编译 c++ 扩展并通过 setup.py 安装整个库之前不存在。

当我 运行 在 liba/tests/test__cxx.py 中测试时,它抱怨无法导入 liba._cxx

如何解决?

来自

删除测试文件夹中的 __init__.py。这样,测试将使用系统中安装的 liba 而不是源代码中的 liba

我必须在 conftest.py

中指定路径
import os
import sys
directory = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, directory)
sys.path.insert(0, directory + os.sep + "../pybewego")
sys.path.insert(0, directory + os.sep + "..")

pytest 也无法处理 c++ 模块与 python 模块同名的特定情况。我必须遵循那里建议的惯例:

https://github.com/pybind/pybind11/issues/1004#issuecomment-322941844

现在我可以使用 pybind11 定义一个包含纯 python 和 c++ 扩展的模块,并使用 pytest 进行测试。