我正在尝试使用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/