概述
解决pyinstaller打包涉及uiautomation截图时出现的dll找不到的错误
项目中有时候需要写一些小工具进行自动化测试、稳定性烤机使用。
因为主要是涉及到C端的应用,烤机过程中需要配合着错误截图。
为了定位元素以及操作方便,通常可以直接使用 uiautomation进行元素定位和操作
这个过程中则会同时设计到截图操作,
auto中有一个现成的截图方法
import uiautomation as auto
auto.GetRootControl().CaptureToImage(f"fail_{time.strftime('%H-%M-%S')}.png")
可以直接截取当前屏幕的画面。
但是打包成exe后,运行则会提示 :
Failed to load dynlib/dll ‘UIAutomationClient_VC140_X64’. Most likely this dynlib/dll was not found when the application was frozen.
大致意思就是无法加载 uiautomation的一个dll,这个dll可以在导入的uiautomation中找到。
终极解决方案
网上找了一轮 发现了一个神奇的工具:Enigma Virtual Box
介绍
和 winrar 自带的 自解压 功能不同,自解压的本质其实是将几个文件制作成一个压缩包,只是这个压缩包的格式是 exe ,运行这个 exe 后,一般会把文件解压缩到 %temp% 这个目录,之后在退出程序时再将这个目录下的文件清理掉,这个过程一般对用户是透明的。
而 Enigma Virtual Box 属于虚拟文件打包系统,不会释放文件到硬盘,所以它的打开速度要比自解压打包的 exe 启动快。
官网下载:https://enigmaprotector.com/en/downloads.html
使用方法
先选择主程序(不着急选附带的其他文件)
再定义导出文件的路径
添加其他附属文件关键的来了,把加载不上的dll添加进来
最后点执行封包,在导出目录里即可找到封装好的单文件。
完美解决该问题。这里记录下,免得后面又忘记怎么操作了。
最后
以上就是陶醉水池为你收集整理的解决pyinstaller打包涉及uiautomation截图时出现的dll找不到的错误的全部内容,希望文章能够帮你解决解决pyinstaller打包涉及uiautomation截图时出现的dll找不到的错误所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复