4.nuitka打包正式版本故障调试篇(nuitka debug)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:nuitka打包成正式发布版本,之后出现故障调试难度非常大,也很麻烦,这个是每个使用nuitka都有的感受。本文基于“3.nuitka只打一次包多次版本发布”文章进一步展开讲打包调试篇
网上打包方法大多是把程序打包进exe中,这种方式在解决打包后才遇到的问题就很麻烦,每次改动点代码,就要打包一次,而nuitka打包过程动辄几分钟才结束,这种调试方式效率非常低。
基于此种困难,本文提出一个调试思路用于解决难题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、打包正式版本命令

在打包命令中加入:

--windows-disable-console --windows-icon-from-ico=exe图标文件路径.ico

并把打包结果路径修改到其他目录下,打包完成之后,从打包路径下把exe文件复制到正式版本对应exe路径之下,使用cmd方式之下exe文件,即可打开print结果输出。

二、nuitka打包调试

采用正式版本打包命令打包的程序,执行时是看不到打印信息,运行过程与预期不一致时,解决办法:把正式打包命令去掉以下信息:

--windows-disable-console

并把打包结果路径修改到其他目录下,打包完成之后,从打包路径下把exe文件复制到正式版本对应exe路径之下,使用cmd方式之下exe文件,即可打开print结果输出。

三、联合调试之文件级调试

提示:本步骤需要于3.nuitka只打一次包多次版本发布一起联合起来操作,才能够解决多次调试的困难。
打包成功之后,编译项目代码为pyd文件,按项目模块层级拷贝到打包程序目录下,不明确的可以参考我的博客下PyQt快速开发框架项目打包案例中打包篇(当前未写完成预告)。

关闭打包后运行的程序,修改源文件,加入print调试代码或写文件等代码,使用Cython对单个项目中py文件进行转换为pyd文件,复制到对应打包目录下。运行打包程序,执行到故障点位置,查看打印日志,确认代码问题。

四、nuitka打包后的bug总结

提示:代码逻辑问题不在此解决。

1.类型限制

运行打包程序,提示:

TypeError: Expected str, got bytes

原因:是函数使用类型限制、以及用Cython编译为pyd文件给打包程序调度导致的问题。
代码示例,encodeByXXX函数中参数text限定类型为str:

def add_to_16(text):
	if len(text.encode('utf-8')) % 16:
		add = 16 - (len(text.encode('utf-8')) % 16)
	else:
		add = 0
	text = text + ('\0' * add)
	return text.encode('utf-8')

def encodeByXXX(key,text:str):
	text = add_to_16(text)

编译为pyd文件之后,复制到打包目录下,被调用这段函数encodeByXXX运行包以上错误。
暂时已知解决办法:去掉类型限制。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿飞哥666

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值