首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Pybind11和CMake构建python扩展模块环境搭建

编程知识
2024年07月17日 13:24

使用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进行编译和构建,确保正确安装了cmakeC++的编译工具链

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
From:https://www.cnblogs.com/mrchip/p/18307279
本文地址: http://shuzixingkong.net/article/118
0评论
提交 加载更多评论
其他文章 写了一个json小工具,希望大家体验(Mac平台)
用rust写了一个json小工具“JSON PICKER”,欢迎大家试用: https://github.com/davelet/json-picker/releases/tag/V0.2 动机是平常开发的时候,经常遇到大段json,里面的很多字段是不需要的。 我所在的项目组在接口对接上出现了rep
写了一个json小工具,希望大家体验(Mac平台) 写了一个json小工具,希望大家体验(Mac平台)
Java JVM——12. 垃圾回收理论概述
1.前言 1.1 什么是垃圾? 在提到什么是垃圾之前,我们先看下面一张图: 从上图我们可以很明确的知道,Java 和 C++ 语言的区别,就在于垃圾收集技术和内存动态分配上,C++ 语言没有垃圾收集技术,需要我们手动的收集。 垃圾收集,不是 Java 语言的伴生产物,早在1960年,第一门
Java JVM——12. 垃圾回收理论概述 Java JVM——12. 垃圾回收理论概述 Java JVM——12. 垃圾回收理论概述
.NET开源、简单、实用的数据库文档生成工具
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等多文档格式的导出:DBCHM。 支持的数据库 SqlServer、MySQL、Oracle、Postg
.NET开源、简单、实用的数据库文档生成工具 .NET开源、简单、实用的数据库文档生成工具 .NET开源、简单、实用的数据库文档生成工具
基于MindSpore实现BERT对话情绪识别
本文分享自华为云社区《【昇思25天学习打卡营打卡指南-第二十四天】基于 MindSpore 实现 BERT 对话情绪识别》,作者:JeffDing。 模型简介 BERT全称是来自变换器的双向编码器表征量(Bidirectional Encoder Representations from Trans
说说RabbitMQ延迟队列实现原理?
使用 RabbitMQ 和 RocketMQ 的人是幸运的,因为这两个 MQ 自身提供了延迟队列的实现,不像用 Kafka 的同学那么苦逼,还要自己实现延迟队列。当然,这都是题外话,今天咱们重点来聊聊 RabbitMQ 延迟队列的实现原理,以及 RabbitMQ 实现延迟队列的优缺点有哪些? 很多人
说说RabbitMQ延迟队列实现原理? 说说RabbitMQ延迟队列实现原理? 说说RabbitMQ延迟队列实现原理?
美团VS饿了么,到底谁更胜一筹?
最近啊,收到一个粉丝的投稿,我发现他在美团和饿了么都去面试过。 这俩企业大家应该都经常用吧,咱点外卖的时候,我有时候就琢磨,到底他俩谁更厉害点。 今天咱们就瞅瞅,在面试这块儿谁更难一些。 (目前都只有一面的情况,要是想要后续的,私聊我发给你哈) 美团 一面 自我介绍 项目做完了吗?背景是什么?项目初
yolov5 损失函数代码详解
模型的损失计算包括3个方面,分别是: 1. 定位损失 2. 分类损失 3. 置信度损失 本篇主要讲解yolov5中损失计算的实现,包括损失的逻辑实现,张量操作的细节等。
yolov5 损失函数代码详解 yolov5 损失函数代码详解 yolov5 损失函数代码详解
Linux 提权-密码搜寻
本文通过 Google 翻译 Password Hunting – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。 导航 0 前言 1 密码搜寻 – 文件名和文件内容 1.1 寻找有趣的文件名 1.2 寻找有趣的
Linux 提权-密码搜寻 Linux 提权-密码搜寻 Linux 提权-密码搜寻