关于Pybind的详细安装与配置过程

入职前有关Pybind的学习,用时接近一天,终于把这块拿下了,心累!!!必须记录下来!
一、pybind相关基本知识
pybind11是一个轻量级的仅头文件库,是一个只有标题的库,因此不需要链接任何特殊的库,主要用于创建现有C++代码的Python绑定。可将pybind11库视为Boost.Python的一个小型自包含版本,其中剥离了与绑定生成无关的所有内容,依赖于python(2.7或3.5+)和C++标准库。
pybind11核心功能:pybind11可以将C++功能映射到Python。
pybind11支持的编译器:
(1).Clang/LLVM 3.3或更高版本;
(2).GCC 4.8或更高版本:注:编译2.9.1版本的test,GCC需要5以上版本;
(3).Visual Studio 2015或更高版本。
pybind11的安装:
(1).通过conda,执行:conda install -c conda-forge pybind11
(2).通过pip,执行:pip install pybind11
(3)官网下载源码(本次实践所用,下载地址是D:\VS2019code)
Linux:python dev/python3 dev、cmake
macOS(附带python):cmake
Windows:Visual Studio 2017及其更新版
二、实践结果总结

  1. 环境:
    Window 10
    visual stdio 2019
    pybind11 2.9.0
    Pycharm 2019.2.1
    Cmake 3.23.2
    2.配置过程:
    (1)官网上下载pybind11:https://github.com/pybind/pybind11
    (2)在anaconda上创建一个新的环境envTest1。
    创建命令是 conda create -n envTest1 python=3.7
    查看环境是否创建成功:conda env list
    (3)创建成功后该环境地址为D:\anaconda\envs\envTest1,在envTest1文件夹下创建一个新的文件夹C++Project.
    在这里插入图片描述
    (4)打开vs2019,创建一个空项目,项目名称为TesePybind,地址为D:\anaconda\envs\envTest1\C++project\TesePybind。
    在这里插入图片描述
    (5)将刚开始下载好的pybind源码压缩包进行解压,得到pybind11-master文件,将这整个文件复制到D:\anaconda\envs\envTest1\C++project\TesePybind 中,并重命名为pybind11。
    在这里插入图片描述
    (6)开始配置vs2019
    1)右键项目Tesepybind-属性
    在这里插入图片描述
    2)常规选项中,将配置类型设置为动态库(.dll):
    在这里插入图片描述
    3)在VC++目录中修改包含目录,其中红框中需填上新环境envTest1下include的目录以及TesePybind中pybind11下的include的目录(D:\anaconda\envs\envTest1\C++project\TesePybind\pybind11\include),非常重要!!!!
    在这里插入图片描述
    4)库目录下填写环境envTest1下的libs目录。
    在这里插入图片描述
    5)链接器-输入-附加依赖项中填写环境envTest1的libs中的所有文件目录。我这里有三个:python3.lib、python37.lib、_th=kinter.lib。注:有些资料里填的不是绝对路径,会报错!一定是绝对路径!!!!
    在这里插入图片描述
    (7)在vs项目TesePybind中创建main.cpp文件和CMakeLists.txt:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    此时,运行main.cpp无报错,说明pybind11配置成功!!!
    在这里插入图片描述
    (8)配置cmake:
    1)网上下载cmake安装包,我放在C++Project下,解压:
    在这里插入图片描述
    2)打开cmake界面:
    在这里插入图片描述
    3)如图填好,下一个中的build会自动创建
    在这里插入图片描述
    4)点击左下角configure:
    在这里插入图片描述

在这里插入图片描述
5)出现configuring done时,点击generate后会出现generating done(在configuring done的下一行)。
在这里插入图片描述
在这里插入图片描述
6)点击open Project,会生成一个新工程example(由cmake打开);
在这里插入图片描述
右击example-生成,会出现:
在这里插入图片描述
此时成功生成pyd文件,注意地址!
在这里插入图片描述
(9)在envTest1环境中,在pycharm中创建一个新的虚拟环境(pythonProject):file-new project。注意地址!
在这里插入图片描述
(10)如图所示:
在这里插入图片描述
在这里插入图片描述
(11)虚拟环境建成后,将之前得到的pyd文件复制到环境envTest1的Lib中:
在这里插入图片描述
(12)在pycharm中新建一个py文件,可以发现此时可以import到example这个库了!!!测试一下,输出结果,完成!!!!!
在这里插入图片描述
真不容易!!中间出来好几个报错,有惊无险!!

参考好多大佬的!!鞠躬!感谢!
http://dljz.nicethemes.cn/news/show-388257.html
https://blog.csdn.net/qq_44843469/article/details/122116098
https://blog.csdn.net/u012193416/article/details/124778793

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 VS Code 中安装 pybind11,需要先安装 Python 和 C++ 编译器。 1. 安装 Python 如果你还没有安装 Python,请先安装 Python。你可以从 Python 官网下载安装包,然后按照提示进行安装。 2. 安装 C++ 编译器 pybind11 是一个 C++ 库,因此需要安装 C++ 编译器。在 Windows 上,你可以安装 Visual Studio,或者安装 MinGW。在 Linux 上,你可以安装 GCC。 3. 在 VS Code 中安装 Python 插件 打开 VS Code,点击左侧的扩展图标,在搜索框中输入 Python,选择 Microsoft 的 Python 插件,并点击安装。 4. 安装 pybind11 打开终端(在 VS Code 中,可以使用 Ctrl+` 快捷键打开终端),输入以下命令安装 pybind11: ``` pip install pybind11 ``` 5. 创建 C++ 扩展 在 VS Code 中创建一个新的文件夹,作为你的项目文件夹。在该文件夹下,创建一个名为 `setup.py` 的 Python 脚本文件,用于编译和安装 C++ 扩展。 在 `setup.py` 文件中,引入 pybind11 模块,然后编写 C++ 扩展的编译和安装命令。例如: ```python import os import sys from setuptools import setup, Extension # 引入 pybind11 模块 try: import pybind11 except ImportError: os.system('pip install pybind11') import pybind11 # 定义 C++ 扩展模块 ext_modules = [ Extension( 'example', ['example.cpp'], include_dirs=[pybind11.get_include()], language='c++' ), ] # 编译和安装 C++ 扩展 setup( name='example', ext_modules=ext_modules, zip_safe=False, ) ``` 在上面的代码中,`example.cpp` 是 C++ 扩展的源代码文件。在 `Extension` 中,指定了扩展的名称、源文件、头文件路径和编译语言。在 `setup` 中,指定了扩展的名称和模块列表。 6. 编译和安装 C++ 扩展 在终端中,进入项目文件夹,然后输入以下命令编译和安装 C++ 扩展: ``` python setup.py build_ext --inplace ``` 这个命令会在项目文件夹下生成一个名为 `example.cpython-37m-x86_64-linux-gnu.so` 的共享库文件,其中 `37` 表示 Python 的主版本号,`m` 表示 Python 编译器使用的内存模型,`x86_64-linux-gnu` 表示操作系统和 CPU 架构。 7. 在 Python 中使用 C++ 扩展 在 Python 中,使用 `import` 命令导入 C++ 扩展,就可以使用 C++ 扩展中的函数和类了。例如: ```python import example result = example.add(1, 2) # 调用 C++ 扩展中的 add 函数 print(result) ``` 上面的代码中,`example.add` 调用了 C++ 扩展中的 `add` 函数,并返回了计算结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值