ubuntu c++ 调用 python

环境 ubuntu16.04

因为手头上的工作需要用到c++与python的交互,所以写下这个博客.

1.c++

1.1 test.cpp

#include 
int main(int argc, char *argv[]) {
    Py_Initialize();

    //判断初始化是否成功
    if(!Py_IsInitialized())
    {
        printf("Python init failed!\n");
        return -1;
    }
    PyRun_SimpleString("import sys");
    //PyRun_SimpleString("sys.path.append('./')");//若python文件在c++工程下
    // 添加python文件所在的位置
    PyRun_SimpleString("sys.path.append('/home/jinye/projects/D3Feat')");
    PyObject* pModule = NULL;
    PyObject* pFunc = NULL;

	//导入python文件
    pModule = PyImport_ImportModule("forcpp");
    if (!pModule) {
        printf("Can not open python file!\n");
        return -1;
    }

    pFunc = PyObject_GetAttrString(pModule, "printHello");
    //PyEval_CallObject(pFunc, NULL);
    PyObject_CallObject(pFunc, NULL);

    Py_DECREF(pFunc);
    Py_DECREF(pModule);
    Py_Finalize();
    return 0;
}

1.2 CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(python_test)

include_directories(
    /usr/include/python2.7
)

add_executable(test
    test.cpp)
target_link_libraries(test
    /usr/lib/x86_64-linux-gnu/libpython2.7.so
)

2.python

import sys

def printHello():
    print(sys.version)
    print("hello world!")

这里,还把python的版本号打印出来了.

3.结尾

在这里插入图片描述
现在用的还是系统带的python2.7版本,因为想用conda环境的python版本,修改头文件和库文件遇到了问题,尴尬…
修改好了!可以参看这篇博客
ubuntu c++ 调用 conda的python虚拟环境

参考
https://www.cnblogs.com/Pan-Z/p/7126630.html

你可能感兴趣的:(c++,c++,python)