码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Pybind11和CMake构建python扩展模块环境搭建


    本文介绍使用CMake构建工具链基于Pybind11利用C++构建Python的拓展模块

    使用pybind11的CMake模板来创建拓展环境搭建

    从Github上下载cmake_example的模板,切换分支,并升级pybind11子模块到最新版本

    拉取pybind11使用cmake构建工具的模板仓库

    git clone --recursive https://github.com/mrchipset/cmake_example.git
    

    切换分支

    git checkout -b dev
    

    升级submodule并切换到最新的v2.11.0版本

    git submodule update --remote
    cd pybind11
    git checkout v2.11.0
    

    为了不破坏原有的python环境,我们新建一个虚拟的python环境,并切换到虚拟环境中进行实验

    python3 -m venv venv
    source venv/bin/activate
    

    使用pip进行编译和构建,确保正确安装了cmake和C++的编译工具链

    pip install ./cmake_example
    

    apl6QqY15fgkrzs4aMd3dd5s4N4_pP6iuqlKRIclbmQ.png

    安装成功后就赶进在python中导入包试试吧

    (venv) mrchip@ubuntu22:~/src/demo/cmake_example$ python
    Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cmake_example
    >>> cmake_example.__version__
    '0.0.1'
    >>> dir(cmake_example)
    ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', 'add', 'subtract']
    >>> cmake_example.add(1, 2)
    3
    >>> cmake_example.subtract(1, 4)
    -3
    >>>
    

    如果到这里都完成了,那么整明我们的pybind11开发环境已经搭建完成了,下一期我们将深入这个模板工程来了解一些pybind11构建拓展的基本操作流程

    踩坑记录#

    如果直接cmake configure不过,那么需要检查是否安装了python的开发库其中包含了python头文件和链接库

    sudo apt install python3-dev libpython3-dev
    

    如果无法创建python虚拟环境,安装这个模块

    sudo apt install python3-venv
    

    如果没有安装编译环境那么可以先安装cmake和gcc等工具链

    sudo apt install cmake build-essential gdb
    

    作者:Mr.Chip

    出处:https://www.cnblogs.com/mrchip/p/18307279

    版权:本作品采用「知识共享署名 4.0 国际许可协议」许可协议进行许可。

  • 相关阅读:
    30.在springboot中使用thymeleaf的模板(include,insert)
    网络编程 lesson5 IO多路复用
    智慧零售解决方案-最新全套文件
    ChatGPT 升级出现「we are unable to authenticate」怎么办?
    数据库高可靠,轻松解决事务丢失问题
    一个面向MCU的小型前后台系统
    STM32G030F6 (SOP-20)Cortex ® -M0+, 32KB Flash, 8KB RAM, 17 GPIOs
    家政服务平台如何盈利
    sqoop 脚本密码管理
    moment函数转换后的时间不正确,带有 “sa“等奇怪的字母
  • 原文地址:https://www.cnblogs.com/mrchip/p/18307279
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号