gpt4 book ai didi

python - 使 C++ 模块成为 Python 包的一部分

转载 作者:太空狗 更新时间:2023-10-29 18:08:03 25 4
gpt4 key购买 nike

我有以下目录布局

awesome_package
\- module1.py
\- build
\- module2.so

我目前将 module1 导入为

import awesome_package.module1

和模块2作为

import sys
sys.path.append('path/to/awesome_package/build')
import module2

但我希望能够使用以前的语法。

module2 由 pybind11 以如下方式创建:

PYBIND11_MODULE(module2, module2) {
module2.doc() = "C++ module wrapped for Python";
module2.def("some_cpp_function", some_cpp_function)
}

最佳答案

正如我在评论中所说,二进制 Python 模块通常使用 distutils/setuptools 构建。为此,您需要编写包含所有必要选项的 setup.py 脚本。下面是一个非常简单的示例,仅显示基本内容:

from setuptools import setup, Extension

setup(
name = 'awesome',
version = '0.0.1',
packages = ['awesome_package']
ext_modules = [Extension(
'awesome_package.module2',
['src/module2.cpp']
)]
)

当然,在 setup.py 中,您需要指定所有构建选项,如头文件、编译器标志等。

如果你坚持使用 CMake,你需要添加一个自定义复制命令来复制你编译的模块到你的包中。像这样:

add_custom_command(TARGET module2 POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:module2>
"${CMAKE_SOURCE_DIR}/awesome_package"
)

关于python - 使 C++ 模块成为 Python 包的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45618440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com