我正在尝试使用pybind11并为python2.7和python3.6创建我的library.so。我使用cmake包来使用pybind11,但也可以实现我自己的包。
据我所知,我需要在安装pybind时指定我使用的python版本。我需要指定so add_pybind11_module将知道要链接的python等。此外,我可以使用g++自己创建so,并创建两个so。
此外,我需要在不同的文件夹中创建so,因为它们的名称是相同的。
我猜这个问题已经有了解决方案。在pybind11中有内置的支持吗?还是有人为它做了一个cmake插件?
谢谢
发布于 2019-12-02 03:01:58
您需要构建两次扩展并生成两个.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将您的库放置在适当的位置。
https://stackoverflow.com/questions/59128309
复制相似问题