巧用visual studio(VC++)解决pyinstaller打包的exe文件过大的问题(一)

0. 背景

本人最近喜欢上python,刚好又做audio相关的工作,就想用python做一个各种音频文件生成的小工具。运行效果如下图。但是想着给同事们都使用一下,但是别人不一定有python环境,就使用pyinstaller打包生成一个exe文件。谁知,exe文件30几M。惊吓。一顿搜索之后,开始了各种方案的尝试,什么pipenv,anaconda,UPX,mingw等等,一圈下来身心俱疲。柳暗之中突然想到本人电脑上只有一个现成的万能的微软巨无霸,我们要擅于站在巨人的肩膀上,瞬间感觉花要开了。结合前面两天对许多方案的遍历性尝试,大致有了思路。

基本原理是:  python脚本运行的时候是在cmd命令行下,通过调用python安装目录下的python.exe  xxx.py命令来的运行的。C++有机制可以调用外部exe可执行程序。既然这样那么可以写一个c++程序,在C++程序里面调用python.exe来执行脚本。理论完美契合。

1. 准备工作

1.电脑上安装vs2017或者vs2010等IED环境

2.准备好未经pyinstaller打包的python脚本(或者已经通过pyinstaller -F命令打包成的单个exe文件)

开始行动:

1.在vs2017中创建一个solution名字叫vs2017_win32_prj_sln,然后在这个slution下创建一个新的win32的控制台应用程序,图一

1.1 创建完成后如图二:

1.2 打开图二中的文件call_python_test.cpp,里面有一个空的main函数

图一

图二

2. 实战解决方案:

2.0 在main函数中添加如下code。

2.1 其中D:\\Python37\\python.exe是你的python安装路径

2.2 其中 E:\\study_python\\pyinstaller_test\\general_2ch_sinwav_file.v1.300.py是你的python脚本所在的位置

2.3 反斜杠2.1  2.2中的表示转义。不要忽略了。

2.4 开始执行编译动作。如图3

2.5 执行完以后会在工程下生成文件,如图四。看看大小,惊不惊喜? 9K 哦 9K 哦。

2.6 对比pyinstaller打包生成的 30M。惊不惊喜,惊不惊喜,惊不惊喜?

2.7 新生产的文件call_python_test.exe效果如图五

2.8 如果细心看我po的代码的话,又善于动手的话,你会发现,直接调用pyinstaller生产的.exe文件也可以。各位不妨尝试一下。

2.9 程序员的coding历程从来不会一帆风顺,永远走在解决问题的路上。为什么这么说呢? 请仔细看图五。是不是发现有点遗憾? 有一个cmd黑色的窗口伴随这我们的小工具启动了。怎么解决呢?

请关注本人第二篇改进型方案 https://blog.csdn.net/qingfengjuechen/article/details/103021189 

int main()
{  
	system("D:\\Python37\\python.exe E:\\study_python\\pyinstaller_test\\general_2ch_sinwav_file.v1.300.py"); //v1, fast
	//system("D:\\Python37\\pythonw.exe E:\\study_python\\pyinstaller_test\\general_2ch_sinwav_file.v1.300.py"); //v1.1, fast
	//system("D:\\Python37\\general_2ch_sinwav_file.v1.300.exe"); //v2
	return 0;
}

图三 

 

图四

图五

 

 

 

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值