0

我使用 pybind11 将模块添加_cxx到现有的 python 库liba。在liba._cxx.func我编译 c++ 扩展并通过setup.py.

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

如何解决这个问题?

4

2 回答 2

1

pytest 无法导入模块,而 python 可以

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

于 2018-01-24T19:37:42.947 回答
0

我必须在 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 进行测试。

于 2021-02-08T14:58:59.427 回答