首页 > 其他分享 >pybind11 setuptools 集成试用

pybind11 setuptools 集成试用

时间:2025-01-23 09:02:09浏览次数:1  
标签:setuptools extension setup py 试用 pybind11 mydemo

pybind11 支持基于setuptools的构建,以下是一个简单试用

项目代码

  • 结构
├── README.md
├── mydemo
│   ├── __init__.py
│   └── demo.py
├── setup.py
└── src
    └── example.cpp
  • 代码说明

src/example.cpp 是基于pybind11 的c++ 扩展

mydemo/__init__.py 是入口,mydemo/demo.py是一个简单的基于python代码的方法

setup.py 定义

from setuptools import setup, find_packages
from pybind11.setup_helpers import Pybind11Extension, build_ext

# Define the pybind11 extension
ext_modules = [
    Pybind11Extension(
        "mydemo.extension",  # Module path
        ["src/example.cpp"],  # Source file
    ),
]

# Package setup
setup(
    name="mydemo",
    version="0.1.0",
    author="Your Name",
    author_email="your_email@example.com",
    description="A Python package with pybind11 and pure Python code",
    long_description=open("README.md").read(),
    long_description_content_type="text/markdown",
    ext_modules=ext_modules,  # Include the pybind11 extension
    cmdclass={"build_ext": build_ext},
    packages=find_packages(),  # Automatically find pure Python modules
    zip_safe=False,
    python_requires=">=3.7",
)

src/example.cpp

#include <pybind11/pybind11.h>

namespace py = pybind11;

int add(int a, int b) {
    return a + b;
}

PYBIND11_MODULE(extension, m) {
    m.doc() = "A pybind11 example extension module";
    m.def("add", &add, "A function that adds two numbers");
}

mydemo/__init__.py

from .extension import add
from .demo import myadd

__all__ = ['add', 'myadd']

mydemo/demo.py

def myadd(a, b):
    return a + b
  • 构建

注意需要结合版本安装setuptools 以及pybind11 等

python setup.py bdist_wheel

说明

注意c native extension 的命名以及pybind11 注册的模块命名,否则加载会有问题,实际属于python 模块加载的内部机制

参考资料

https://pybind11.readthedocs.io/en/stable/compiling.html#modules-with-setuptools

https://docs.python.org/3/c-api/index.html

https://setuptools.pypa.io/en/latest/setuptools.html

https://medium.com/swlh/make-python-hundreds-of-times-faster-with-a-c-extension-9d0a5180063e

标签:setuptools,extension,setup,py,试用,pybind11,mydemo
From: https://www.cnblogs.com/rongfengliang/p/18552984

相关文章

  • libsql 多租户namespace模式试用
    libsql支持基于db分离的多租户模式,但是需要开启namespace能力,以下是一个简单说明以及测试开启namepace我基于docker-compose部署,目前docker部署的缺少环境变量支持,我基于了cmd运行,核心是--enable-namespacesdocker-composeservices:db1:image:ghcr.io/turs......
  • 尝试用GO给python写共享库
    背景就突发奇想,Go的效率相对来说高一些,那我们可不可以用Go来给python写关键处理库呢查了下,还真可以实现,只是障碍比较多,而且使用起来也比较麻烦,但是也还是能实现的解决用Go编写Python库可以通过Cgo或C共享库的方式实现。Go代码可以被编译为C兼容的共享库(.so或.dl......
  • 来试试用c++来测出你的幸运值吧~~~(1.0版)(while循环)(好玩小游戏)
    你是不是也想知道自己的幸运值呢?来试试看吧!废话不多说,上代码!不要忘记点赞哦~~~#include<bits/stdc++.h>#include<windows.h>usingnamespacestd;voidmeasureLuck(intl){intn;cout<<"输入测幸运次数吧!:";cin>>n;cout<<"最大的和是"<&......
  • 软件测试(测试用例)—写用例无压力
    一、概念测试用例的基本概念:测试用例(TestCase)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。主要步骤:测试环境——测试步骤——测试数据——预期结果网易邮箱注册成功测试用例标题:邮箱注册,邮箱输入项测试:简单......
  • C18.【C++ Cont】OJ测试用例的各种输入情况汇总
    目录1.思维导图2.单组测试用例3.多组测试用例1.测试数据组已知(输入)类模版例题2.测试数据组未知模版3.特殊值结束测试数据模版1.逐个字符处理2.一次读一行例题4.应对空格的处理方法1.一次读一行模板2.一次读一个单词5.应对数字的处理方法两个认知1.呈现在......
  • cursor试用出现:Too many free trial accounts used on this machine 的解决方法
    文章精选推荐1JetBrainsAiassistant编程工具让你的工作效率翻倍2ExtraIcons:JetBrainsIDE的图标增强神器3IDEA插件推荐-SequenceDiagram,自动生成时序图4BashSupportPro这个ides插件主要是用来干嘛的?5IDEA必装的插件:SpringBootHelper的使用与功能特点6A......
  • 白盒测试用例设计方法(逻辑覆盖法或者基本路径法)
    目录前言:逻辑覆盖测试法语句覆盖定义实例判定覆盖 定义实例条件覆盖 定义实例判定-条件覆盖 定义实例条件组合覆盖 定义实例路径覆盖 定义实例接下来我们讲基本路径法:定义步骤1:导出过程的控制流图:根据流程图分析结点:步骤2:确定环形复杂性度量V(G......
  • 什么是 pybind11?
    什么是pybind11?pybind11是一个轻量级的C++库,用于将C++代码与Python代码连接起来。它允许你轻松地在Python中调用C++函数和类,同时保持高性能。pybind11为C++和Python之间提供了一个清晰、简单的桥梁,使得我们可以在Python中直接使用C++编写的高性能代码......
  • 如何编写自动化测试用例,一篇带你解决
    自动化测试脚本什么是自动化测试?自动化测试是验证和验证软件是否满足所有用户需求,并使用自动化工具按预期运行。它检查在产品开发阶段期间和之后出现的错误、问题和其他类型的缺陷。这种类型的软件测试运行在由测试工具处理的编程脚本上。有多种测试工具,它们要么提供基于代码的平......
  • 2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
    1、前言Codes是国内首款重新定义SaaS模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对30人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程......