mac 使用 python调 c/c++

mac 使用 python 调 c/c++

mac使用python调c/c++可以使用pybind11和swig。本文主要使用pybind11,具体文档可以参考https://pybind11.readthedocs.io/en/stable/basics.html#linux-macos

本文目录如下:

  • 使用anaconda配置虚拟环境
  • 使用pip安装pybind11
  • 添加环境变量
  • 编译文件
  • 测试

本文参考:https://pybind11.readthedocs.io/en/stable/


使用anaconda配置虚拟环境

这一步骤为选做。若要配置环境,可以参考文章:mac 配置 anaconda 。参考文章链接https://blog.csdn.net/qq_43369406/article/details/126732435

使用pip安装pybind11

打开terminal,在bash中进入你配置好的虚拟环境source activate [your virtual environment]。安装pybind11包pip install pybind11 -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里使用了清华镜像源,当然你可以使用别的源:

# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 或:
# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 腾讯源
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
# 豆瓣源
pip config set global.index-url http://pypi.douban.com/simple/

请添加图片描述

添加环境变量

我们需要将pybind11的include文件添加至bash或者zsh环境变量中,本文以bash为例。首先找到include文件在哪里,一般在你虚拟环境的lib中,例如我的include文件就在/Users/yingmuzhi/anaconda3/envs/conda_OCT/lib/python3.8/site-packages/pybind11

打开bash,打开环境变量文件

vim ~/.bash_profile

在环境变量文件中添加你的include路径

# add pybind11
export MY_PYBIND11_INCLUDE_PATH="/Users/yingmuzhi/anaconda3/envs/conda_OCT/lib/python3.8/site-packages/pybind11/include"

编译文件

我们按照官方教程书写如下example.cpp

#include <pybind11/pybind11.h>

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // optional module docstring

    m.def("add", &add, "A function that adds two numbers");
}

保存后,打开terminal进入第一步的虚拟环境,找到sample.cpp文件,输入如下代码生成.so文件(linux下的动态链接库)

c++ -O3 -Wall -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`

于是我们得到了example.cpython-38-darwin.so文件

测试

在上一步的目录中,我们在terminal中进入python环境进行测试

python

>>> import example
>>> example.add(1, 2)
>>> 3

请添加图片描述

测试成功,结束。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值