【Python】pyinstaller打包python程序生成exe文件 + C程序调用exe文件

运行python开发的程序,需要用户的电脑部署好python环境,而且还需要用户在命令行中输入命令来运行,当然你也可以写好bat脚本,让用户双击一下即可运行,但是依然还是需要用户电脑有python环境,对于普通用户来说,运行你的程序还得去部署环境,使用成本太高了。

那么,python程序能不能做到像普通软件一样,让用户直接双击就能运行的呢?

为了解决这个难题,pyinstaller应运而生,pyinstaller支持将python打包成window / Mac / GNU/Linux的应用软件, 算是覆盖了所有主流的操作系统了

 

pyinstaller官网:https://www.pyinstaller.org/

 

pyinstaller安装:

pip install PyInstaller

 

打包python文件为可执行文件exe:

一些关键的option参数选项:

--clean:在编译成exe之前,清除PyInstaller缓存并删除临时文件

--log-level LEVEL:编译时控制台打印日志的信息量,取值其一:TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL (default: INFO).

-D, --onedir:指定生成一个包含exe可执行文件的单文件夹包(这是默认生成exe的方式)

-F, --onefile:指定只生成单个exe可执行文件(即把上面文件夹下所有的文件都打包进单个exe中,但是实际运行时候,会解压到一个临时文件才运行,因此,这种方式启动会比-D会慢一丢丢)

-i , --icon:将该图标应用于Windows可执行文件(默认:应用PyInstaller的图标)

pyinstaller打包的命令行如下:

pyinstaller -D test_argparse.py

这里使用参数-D是将软件打包在一个独立文件夹中:

注意:如果使用参数-F则是将上面那个独立文件夹打包为一个exe,每一次调用都需要解压到一个临时文件才运行,如果你包含了比较复杂的模块比如cv2或者tensorflow,那解压时间会变得非常久

打包的python程序可以参考我的另外一篇博文:https://blog.csdn.net/jin739738709/article/details/113318496

 

C++调用exe:

system函数的头文件是stdlib.h,C语言调用包含cv2的exe不用再配置opencv的环境了,因为那些cv必须的dll、h、lib啥的都已经包含在打包文件夹中了

#include<stdlib.h>
#include<iostream>

using namespace std;

int main() {
	cout << "hello" << endl;
	system(".\\test_argparse\\dist\\test_argparse\\test_argparse.exe --image=.\\default2.jpg --sparse=True --seed=27 --epochs=20");
	//system(".\\test_argparse\\dist\\test_argparse\\test_argparse.exe");
	//system("pause");
	return 0;
}

这里注意system函数中的--image参数的输入值是 .\\defaul.jpg 而不是 ‘.\\default.jpg’,更不是 “.\\default.jpg”

否则会出现以下错误:

意思就是opencv按照给定的路径读取不到图像,这里面可能是路径写内容写错或者格式写错,这里就是格式写错!

 

 

参考博文:

https://www.cnblogs.com/mini-monkey/p/11195309.html

https://blog.csdn.net/zhu2695/article/details/12133817/

https://zhidao.baidu.com/question/541383060.html

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

JinSu_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值