当前位置: 首页> 科技> 名企 > 网站详情页设计_旅游网站设计思路及设计过程_网站seo入门基础教程书籍_上海seo网站推广公司

网站详情页设计_旅游网站设计思路及设计过程_网站seo入门基础教程书籍_上海seo网站推广公司

时间:2025/9/7 13:17:18来源:https://blog.csdn.net/qq_42580947/article/details/144370110 浏览次数:1次
网站详情页设计_旅游网站设计思路及设计过程_网站seo入门基础教程书籍_上海seo网站推广公司

esptool打包后失效解决方法

      • 问题1
      • 原因
      • 解决方法
      • 问题2
      • 原因
      • 解决方法

问题1

esptool经过pyinstaller打包成exe后,提示错误:Stub flasher JSON file for esp32 not found

原因

pyinstaller在进行esptool打包的时候,通常不用讲Stub flaser Json文件进行打包,所以在运行exe的时候会报错。

解决方法

解决方法就是在打包的时候,手动讲json文件添加进去。
① 首先,找到你的esptool安装路径:

import esptool
print(esptool.__file__)

② 在你的安装路径下,在esptool/文件夹下有一个tagets文件夹,stub flasher就在里面:
在这里插入图片描述
③ 在pyinstaller打包的时候,将stub flasher手动添加进去:

pyinstaller --add-data "path_to_site_packages/esptool/targets/stub_flasher;esptool/targets/stub_flasher" your_project.py

然后就可以正常使用esptool了

问题2

如果你打包的代码是GUI工程,比如你使用了pyQt或者pyside,而且在打包的时候使用了“-w” 或者“–windowed”指令去关闭控制台,这种情况下esptool仍然无法工作

原因

因为 -w 参数(也可写作 --windowed 或 --noconsole)会创建一个没有控制台窗口的 Windows 程序。这会影响到 esptool 的工作,因为esptool 依赖控制台进行输出和错误处理。

解决方法

一种方法是在程序启动时动态分配一个控制台。这样可以保持单个可执行文件,同时确保 esptool 能正常工作。这种方法的优点是可以保持单个可执行文件,只在需要时临时创建控制台,使用完后自动释放控制台,而且可以继续使用 -w 参数打包,这种方法应该能让 esptool 正常工作。下面程序是一个例子:

try:import ctypesimport syskernel32 = ctypes.WinDLL('kernel32', use_last_error=True)kernel32.AllocConsole()# 保存原始的标准输入输出old_stdout = sys.stdoutold_stderr = sys.stderr# 创建新的输出流stdout = open('CONOUT$', 'w')stderr = open('CONOUT$', 'w')sys.stdout = stdoutsys.stderr = stderrprint("开始固件更新,请勿断开设备...")import esptoolcommand = ['--chip', 'esp32','--port', port,'--baud', '921600','write_flash', '0x10000',self.ota_save_path + '/' + firmware_name]try:esptool.main(command)print("\n固件更新成功!")success = Trueexcept Exception as e:print(f"\n固件更新失败:{str(e)}")success = Falseraise efinally:# 恢复原始的标准输出sys.stdout = old_stdoutsys.stderr = old_stderr# 关闭输出流stdout.close()stderr.close()# 释放控制台kernel32.FreeConsole()
关键字:网站详情页设计_旅游网站设计思路及设计过程_网站seo入门基础教程书籍_上海seo网站推广公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: