对于纯python程序而言,用c程序来调用是比较适合的,如果python程序中包含了其他第三方库,则调用极可能出错,且不易查明原因。如笔者曾用c程序调用包含tensorflow的python程序,有的可以成功,有的则卡在某条语句,百般尝试也未能实现。
一、纯python程序
以下程序编译环境为VS2013,,所用tensorflow版本为1.4.0 和1.9.0,python版本为3.6.2 。
所做设置也为调用tensorflow所准备,对于普通的python调用而言只多不少:
1、环境配置
需要安装anaconda软件
①将vs工程配置为X64平台
②包含目录 添加路径 D:\anaconda\include
③库目录 添加路径 D:\anaconda\libs
④附加依赖项 添加 python36.lib
2、编写代码如下:
.py文件需和编译生成的.exe文件放在一起
test.py代码
#coding:utf-8
import os
def run(com):
return com
def main():
print(run(("4",3)))
if __name__=='__main__':
main()
c.cpp代码
#include<iostream>
#include <Python.h>
using namespace std;
int main()
{
//***python调用***//
//初始化python模块
Py_Initialize();
// 检查初始化是否成功
if (!Py_IsInitialized())
{
cout << "初始化失败" << endl;
Py_Finalize();
}
PyObject *pModule;
PyObject*pFunc =