当前位置:数据分析 > vs2010集成python_vs2010中C++调用python脚本并制作安装包

vs2010集成python_vs2010中C++调用python脚本并制作安装包

  • 发布:2023-09-26 05:50

一、 准备工作

1. 安装visual studio 210。

2. 安装python编译环境,笔者版本为2.7.2。

3. 安装py2exe,用于给编写好的python打包。

二、编写python脚本程序

以下程序为笔者为学校的bbs写的登陆脚本www.sychzs.cn,输入为用户名和密码,返回一段cookie字符串:

import httplib,urllib

import re

import random

def Login(userid,password):

params=urllib.urlencode({'id':userid,'pw':password});

headers={'Referer':'http://www.sychzs.cn/cache_bbsleft.htm'}

#userdir是随机生成每个用户的线程,如‘/vd89905’

userdir='/vd'+str(random.randint(100,100000))

conn=httplib.HTTPConnection('www.sychzs.cn')

conn.request('POST',userdir+'/bbslogin?type=2',params,headers)

response=conn.getresponse()

msg=www.sychzs.cn()

if response.status==200 and response.reason=='OK':

print '>>>> login success!'

patt='\'(\d+)N'+userid+'\+(\d+)\''

cookieOrign=re.findall(patt,msg)

cookies=[]

#小百合设置对_U_NUM+2,对_U_KEY-2

cookies.append(str(int(cookieOrign[0][0])+2))

cookies.append(str(int(cookieOrign[0][1])-2))

cookie=' _U_NUM='+cookies[0]+'; _U_UID='\

+userid+'; _U_KEY='+cookies[1]+' FOOTKEY=; '

return cookie

三、利用py2exe为写好的python脚本打包

? ? ?编写www.sychzs.cn脚本:

import py2exe

from distutils.core import setup

setup(console=['www.sychzs.cn'])

? 将www.sychzs.cn和www.sychzs.cn放到python的安装路径中(笔者的为C:\Program Files\python)。

? 在cmd的C:\Program Files\python路径下运行:

python www.sychzs.cn py2exe

?这时会在安装目录下生成dist和build文件夹,dist文件夹中就是我们所需要的包,如下图:

红色方框的为python运行时的库文件,打包后默认文件名为www.sychzs.cn,需要改成www.sychzs.cn,否则vs最终打包后的程序无法调用python库。

四、C++调用python脚本中的函数

在编写C++程序之前,需要在项目属性中设置对python头文件和库函数位置的引用,将python安装目录下的include文件夹和libs文件夹添加到vc++目录,即下图中加粗的位置:

下面的C++程序主要是为了调用www.sychzs.cn中的Login函数,返回值代表调用是否成功,参数为用户名、密码以及返回cookie的指针。

#include

#include

#include // this is in /include folder

using namespace std;

bool LogIn(string userid,string password,string* cookie)

{

string filename="LilyLogin";

string methodname="Login";

PyObject *pyFileName=PyString_FromString(filename.c_str());

cout<

PyErr_Clear();

PyObject *pyMod=PyImport_Import(pyFileName); //打包时调用失败,返回为空

cout<<"in function"<

cout<

if(pyMod) //if OK

{

//load function

PyObject *pyFunc = PyObject_GetAttrString(pyMod, methodname.c_str());

cout<<"python function loaded"<

if(pyFunc && PyCallable_Check(pyFunc))

{

PyObject *pyParams = PyTuple_New(2);

PyObject *pyUserid = PyString_FromString(userid.c_str());

PyObject *pyPassword = PyString_FromString(password.c_str());

PyTuple_SetItem(pyParams, 0, pyUserid);

PyTuple_SetItem(pyParams, 1, pyPassword);

// ok, call the function

PyObject *pyResult = PyObject_CallObject(pyFunc, pyParams);

if(pyResult)

{

cout<<"py result"<

*cookie=PyString_AsString(pyResult);

cout<<2<

return true;

}

}

}

return false;

}

int main()

{

string filename="LilyLogin";

string methodname="Login";

string userid,password,cookie;

cout<<"userid:";

cin>>userid;

cout<<"password:";

cin>>password;

//first init

Py_NoSiteFlag = 1;

Py_Initialize();

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.path.append('.\')");

if(!Py_IsInitialized())

{

cout<<"python初始化失败!"<

return -1;

}

//PyRun_SimpleString("print 'hello world!'");

if(LogIn(userid,password,&cookie))

cout<

else

cout<<"error....."<

// last fini!

Py_Finalize();

int x;

cin>>x;

return 0;

}

编译程序,生成exe文件,笔者生成的文件为pythonCpp.exe。

五、制作安装包

制作安装包是需要将dist文件夹中的文件以及C++编译后的exe、原python脚本(www.sychzs.cn)一起添加进去,笔者的打包文件如下图(可能有些文件并不需要,读者可进行尝试):

制作完成,这下可以在未安装python的机器上运行程序了!

参考文献:

python+Cpp发布

[1]?http://www.sychzs.cn/yuucyf/article/details/5861724 [2] http://www.sychzs.cn/youthwang/article/details/5016932 [3] http://www.sychzs.cn/?p=92 [4] http://www.sychzs.cn/pipermail/cplusplus-sig/2007-October/012680.html

VS2010 制作安装包

[5] http://www.sychzs.cn/wondergdf/article/details/7529603

C++调用Python函数: [6] http://www.sychzs.cn/spvm1313113/article/details/5819297 [7] http://www.sychzs.cn/pzxbc/archive/2012/01/12/2320736.html [8] http://www.sychzs.cn/2/extending/embedding.html

[9]?http://www.sychzs.cn/s/blog_67ac78cf01010tlh.html (python返回list)

最近开始看《机器学习实战》这本书,这本书里面是用python实现了一些基本的算法,因此,首先需要搭建好python的开发环境。

一.相关版本

我的电脑:win8 64位

python版本:python-2.7.5.amd64?

Numpy函数库版本:www.sychzs.cn-amd64-py2.7

python插件版本:www.sychzs.cn-amd64-py2.7

VS版本:VS2010

二.搭建流程

1.安装python

下载地址:

http://www.sychzs.cn/ftp/python/2.7.5/python-2.7.5.amd64.msi

2.安装Numpy函数库

下载地址:http://www.sychzs.cn/s/13T2mM

3.安装针对VS2010的python插件

下载地址:http://www.sychzs.cn/soft/23586.html

4.打开VS2010,创建新工程,选择其他语言-python,再创建控制台程序即可。

1.下载python安装文件

python-2.7.10.msi

网址:https://www.sychzs.cn/downloads/release/python-2710/ ,根据自己环境,选择合适的版本,

因为需要与项目对接,选择2.7版本32位安装文件,虽然现在已经出现3.0版本。

可以选择默认安装路径,一路确定安装即可,如我的默认安装路径:C:\Python27

2. 配置环境变量

(1)配置环境变量,将刚才安装的位置,在计算机高级环境变量中的path变量的值后面添加如下内容

;C:\Python27

注意前面的分号 ' ; '

也可以将Python的安装路径放在系统环境变量:PYTHON_HOME中,然后在path后添加  ;%PYTHON_HOME%

(2)测试是否安装成功

win + R 出现 ,运行对话框,然后输入:cmd ,调出“命令符对话框”

输入:python,则若出现python的版本号,则安装成功

3. 在vs2010集成开发环境中配置进行python开发配置如下

(1)下载PTVS 2.1 VS 2010.msi安装文件

这是vs2010的一个插件,可以在vs下进行python的开发,在vs中配置的VAsistentX插件,进行便利开发

https://www.sychzs.cn/releases/view/109707

(2)默认一路确认安装即可

(3)在vs中新建项目如下图即可在vs中进行python开发

相关文章