一、 准备工作
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
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开发