DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

我正在尝试使用pybind11并为python2.7和python3.6创建我的library.so。我正在使用cmake包使用pybind11,但也可以实现自己的。

据我所知,我需要指定安装pybind时使用的python版本。我需要指定,以便add_pybind11_module知道要使用哪个python进行链接等。此外,我可以使用g++自己创建so,并同时创建so。

另外,我需要在不同的文件夹中创建so,因为它们的名称相同。

我想已经有解决此问题的解决方案。 pybind11中是否有内置支持,或者有人为它做了cmake插件?

谢谢

 

最佳答案

您需要两次构建扩展,并生成两个.so文件。您可以使用简单的bash脚本来做到这一点,就像这样:

# build module for 3.6 
mkdir -p build-python-3.6
(cd build-python-3.6 ; cmake .. -DPYBIND11_PYTHON_VERSION=3.6 ; make )

# build module for 2.7
mkdir -p build-python-2.7
(cd build-python-2.7 ; cmake .. -DPYBIND11_PYTHON_VERSION=2.7 ; make )

pybind11默认在库名称中包含python版本,因此您应该能够将它们放在同一文件夹中(例如my_library.cpython-37m-x86_64-linux-gnu.so)。虽然可能可行,但我建议您编写一个setup.py并让setuptools将您的库放置在适当的位置。

 

关于python - pybind11 python 2.7和3.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59128309/

posted on   DoubleLi  阅读(709)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2017-08-23 ffmpeg编码h264只包含I帧P帧的方法
2017-08-23 【FFmpeg】FFmpeg常用基本命令
2017-08-23 FFmpeg基础知识之————H264编码profile & level控制
2017-08-23 ffmpeg混音(将多个声音合成一个)命令
2017-08-23 ffpanel --ffmpeg的GUI,让ffmpeg离开黑黑的命令行
2017-08-23 使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
2017-08-23 几个学习流媒体的案例代码网址
点击右上角即可分享
微信分享提示