You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Meson构建依赖C++模板的Cython模块

用Meson实现Cython封装C++模板生成Python扩展模块

以下是对应你原有setup.py功能的meson.build配置,能生成可直接被Python import的扩展模块:

project('my_cython_module', 'cpp', python: true)

# 导入Meson的Python和Cython模块
py = import('python')
cython = import('cython')

# 获取Numpy的头文件路径,对应setup.py里的np.get_include()
numpy_include_dir = py.find_installation().get_variable('numpyincludedir')

# 编译Cython文件,指定使用C++语言,对应setup.py的language="c++"
cython_source = cython.cython(
  'lib_wrapper.pyx',
  language: 'c++',
)

# 构建Python扩展模块,对应setup.py的Extension配置
py.extension_module(
  'my_module',  # 最终模块名,和原setup.py一致
  cython_source,
  include_directories: [numpy_include_dir],
  cpp_args: ['-std=c++11', '-O1'],  # 对应原extra_compile_args
  install: true  # 可选,安装到Python的site-packages目录
)

构建步骤:

  • 在项目根目录创建上述meson.build文件
  • 执行以下命令编译:
mkdir build && cd build
meson setup ..
ninja
  • 编译完成后,build目录下会生成my_module.so(Linux平台),直接可以在Python中import my_module使用;若要安装到系统Python路径,执行ninja install

注意事项:

你之前参考的示例生成.so.p文件是因为只执行了Cython编译的中间步骤,没有用py.extension_module()将中间产物打包成Python可识别的扩展模块,上述配置补上了这一关键步骤,就能生成可用的模块文件。

内容的提问来源于stack exchange,提问作者Gideon Kogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:40:43