如何从python脚本调用共享库(.so文件)?

如何从python脚本调用共享库(.so文件)?,python,c++,cmake,shared-libraries,boost-python,Python,C++,Cmake,Shared Libraries,Boost Python,我有一个共享库hello\u ext.so。我需要在python脚本中导入这个共享库。 目录是: - project | - py_binding | - hello_ext.cpp | - CMakeLists.txt | - python_script.py | - CMakeLists.txt 装订正确且有效 在cmake..和make之后,可以从build文件夹调用库 $ python3 $ from hello_ext import greet $ greet() 'hell

我有一个共享库
hello\u ext.so
。我需要在python脚本中导入这个共享库。 目录是:

- project
| - py_binding
  | - hello_ext.cpp
  | - CMakeLists.txt
| - python_script.py
| - CMakeLists.txt
装订正确且有效

cmake..
make
之后,可以从
build
文件夹调用库

$ python3
$ from hello_ext import greet
$ greet()
'hello, world'
因此,管道工程。 但是,如果我使用
python3//python\u script.py
我得到这个错误

Traceback (most recent call last):
  File "/home/sharad/git_repository/longitudinal_control_pid/py_bindings/arduino_connection_usb.py", line 1, in <module>
    from hello_ext import greet
ModuleNotFoundError: No module named 'hello_ext'
主目录中的CMakeLists.txt:


cmake_minimum_required(VERSION 3.0.0)

# set the project name
project(longitudinal_control_pid CXX)

# Set some global variables
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

enable_testing()
add_subdirectory(googletest)

file(GLOB SOURCES 
    src/*.cpp
)

file(GLOB HEADERS 
    include/*.h
)

add_library(longitudinal_control_pid ${SOURCES})

target_include_directories(longitudinal_control_pid PUBLIC ./)

add_subdirectory(test)
add_subdirectory(py_bindings)
我正在使用Ubuntu
20.04
python3
。 我想让这个脚本导入构建的共享库并使用绑定

我已经在谷歌上搜索过了,还没有找到适合我的解决方案

有人知道怎么做吗


谢谢

现在还不清楚到底是什么不起作用。我编辑了这些问题。我希望现在更清楚。共享库需要在Python的模块搜索路径中。我试图避免把.so文件放在这个目录中,因为每次在C++端更改东西时,我都必须这样做。有没有办法从构建中包含.so文件?这在
bazel
中是可能的,我可以让python目标依赖于
。有可能使用cmake吗?Python有一个叫做搜索路径的东西。我不明白,克马克或巴泽尔如何可能影响到这一点。

cmake_minimum_required(VERSION 3.0.0)

# set the project name
project(longitudinal_control_pid CXX)

# Set some global variables
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

enable_testing()
add_subdirectory(googletest)

file(GLOB SOURCES 
    src/*.cpp
)

file(GLOB HEADERS 
    include/*.h
)

add_library(longitudinal_control_pid ${SOURCES})

target_include_directories(longitudinal_control_pid PUBLIC ./)

add_subdirectory(test)
add_subdirectory(py_bindings)