DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我正在尝试使用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 2022-08-23 14:27  DoubleLi  阅读(790)  评论(0)    收藏  举报