记录linux 下c++ 调用 python脚本的坑

 

1、需要安装python的依赖包

这里我安装了多次,这个坑最耽误时间。

第一步:一开始是本地安装,下载https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh。make install 到指定的文件进行安装。

第二步:以为这只是python开发需要的环境,所以又安装了python3.8-dev。

使用CMakeLists.txt,引用include文件路径,项目工程中引用头文件Python.h 时总是报错,然后网络上一顿冲浪,还是没解决问题。

自己推测应该是版本重复,推测是对的,然后尝试删除/usr/include/python3.8 目录,然而还是不行。

自己把第一步安装的文件中include文件目录,全部cp到项目中,竟然还是不行,这是我比较纳闷的和崩溃的,最后查找原因竟然是cp过来的文件夹python3.8名称和/usr/include目录下的文件同名 (使用 locate python.h 确认),其实是我把项目中cp过来的python3.8文件改了一个名称,然后就可以编译了才确认的。

 

2、依赖的文件

 

需要添加 -lpython3.8  而不是-lpython ,这里要指定版本号,也是依赖文件名要写对。

 

3、要调用的python脚本要和可执行文件放在同一目录  而不是项目文件 (我编译的文件都是放到build文件夹下)

 

4、附上CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

project(cpp_python_exe)
set(CMAKE_CXX_STANDARD 11)

set(INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include/python_include)

include_directories(${INCLUDE_DIR})
link_directories(${CMAKE_SOURCE_DIR}/lib)

add_executable(cpp_python_exe ../main.cpp)
target_link_libraries(cpp_python_exe -lpython3.8)

posted @ 2021-04-27 15:24  nmhome  阅读(1000)  评论(0编辑  收藏  举报