我使用 pybind11 将模块添加_cxx
到现有的 python 库liba
。在liba._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 进行测试。