我有一个大型 C++ 库,我试图使用 pybind11 公开它。我在正确设置包含路径时遇到问题。
项目目录结构如下:
root
- sub-project-1
-> C++ files that know nothing about python.
- sub-project-2
-> more C++ files
-> sub-sub-project
-> even more C++ files
- sub-project-3
-> et cetera
- Interfaces
-> R
-> R interface stuff
-> python
-> package_name
-> setup.py
-> pybind11_bindings.cpp
Run Code Online (Sandbox Code Playgroud)
setup.py 文件当前如下所示。该结构主要是从 pybind11 文档复制的。
from setuptools import setup, Extension
from setuptools.command.build_ext import build_ext
import sys
import setuptools
from glob import glob
__version__ = '0.0.1'
class get_pybind_include(object):
"""Helper class to …Run Code Online (Sandbox Code Playgroud) 我维护一个大型 C++ 库,我使用 pybind11 部分接触了 python。C++ 库包含单元测试,我有时会在各种清理程序下运行这些测试:asan、tsan 等。这些测试运行干净,但当然测试并不完美,您无法 100% 测试所有边缘情况。
当我使用具有特定设置、特定数据集和各种选项的库时,有一个特定的 jupyter 笔记本会崩溃,这些选项可以在纯 C++ 环境中复制,但这种复制将非常耗费人力、时间并且容易出错。
如果我面前有纯 C++,我会通过 ubsan、asan 等运行笔记本,以确保我没有看到未定义的行为或段错误。有没有办法可以将这些消毒剂(或类似的东西)应用到我的笔记本上,而无需用原始 C++ 重写所有 python 胶水?