python程序打包成exe

前言

用python写了个项目(在这)想发布出去给没有python环境的人用.试了pyinstaller,打包出来不能正常跑…于是心生淫技,将python环境跟项目放到一起,然后拿C++写几行程序,通过system call的方式调用python运行项目脚本,再将这个C++程序编译成exe…

python环境的准备

我首先试了拿虚拟环境,然后发现虚拟环境少了一堆dll…拿自己的python环境吧,一堆这个项目用不着的库,打包进去太大,挑出来太麻烦…索性另外装一个python.我本身环境是3.6.7版本的,又去另外装了个3.7.2版本.安装时注意把什么设置环境变量,向所有用户安装都取消了,留着pip就好,之后拿pip把包都装好,然后把整个python目录拷贝到项目根目录就完事了

准备一个exe

这就比较野蛮…程序入口__main__.py,然后传下命令行参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <windows.h>
#include <direct.h>
using namespace std;

int main(int argc, char * argv[])
{
string cwd = _getcwd(NULL, 0);
string cmd = "\\Python37-32\\python.exe __main__.py";
cmd = cwd + cmd;
for (int i = 1; i < argc; i++)
{
cmd += " ";
cmd += argv[i];
}
const char *cmd_c_str = cmd.c_str();
// cout << cmd_c_str<<endl;
system(cmd_c_str);
//system("pause");
return 0;
}

编译好拿出来放到项目根目录就完事了