当前位置: 首页 > wzjs >正文

网站开发的重点难点设计个人网站的步骤

网站开发的重点难点,设计个人网站的步骤,站长工具成品源码,羽毛球赛事规则与比赛规则💥打包的 .exe 闪退了?别慌!教你逐步排查 PyInstaller 打包的所有错误! 🛠 运行 .exe 查看报错信息✅ 正确姿势: ⚠ importlib 动态导入导致打包失败❓什么是动态导入?✅ 解决方式: …

💥打包的 `.exe` 闪退了?别慌!教你逐步排查 PyInstaller 打包的所有错误!

    • 🛠 运行 `.exe` 查看报错信息
      • ✅ 正确姿势:
    • ⚠ importlib 动态导入导致打包失败
      • ❓什么是动态导入?
      • ✅ 解决方式:
    • 📦 包元数据丢失问题:`importlib.metadata.PackageNotFoundError`
      • 🎯 根本原因:
      • ✅ 解决方法一:打包命令添加参数
      • ✅ 解决方法二:使用 `.spec` 文件方式
    • ❌ DLL 加载失败:WinError 127
      • ✅ 修复步骤:
        • ✅ 第一步:找到 torch 的 lib 路径
        • ✅ 第二步:修改 `.spec` 文件
    • 🔧 终极解决方案:用 `PyInstaller.__main__` 写一个自定义 `package.py`
      • ✅ 优点:
    • 🔚 总结
    • 🧠 附:打包常见库建议参数

前面的只是学习,虽然问题解决了,但是一个个问题又冒出来了,可以直接看最后一部分,我换了一个方法。

🛠 运行 .exe 查看报错信息

很多人在直接双击 .exe 文件时,会发现它“一闪而过”就没了。这是因为程序崩溃了,报错信息来不及显示。

✅ 正确姿势:

  1. 打开终端(CMD 或 PowerShell)
  2. 切换到 .exe 文件所在目录
  3. 运行:
cd dist\your_program
.\your_program.exe

如图所示:

运行exe看报错


⚠ importlib 动态导入导致打包失败

❓什么是动态导入?

很多库使用 importlib.import_module("模块名") 来动态加载模块,而不是传统的 import 模块名

PyInstaller 只能分析静态导入,遇到动态导入时,它就不知该打包啥了,运行就会提示模块缺失或功能失效。

✅ 解决方式:

spec 文件的 datas 中手动添加:

datas = [(r"G:\anaconda\envs\pcb\Lib\site-packages\ultralytics", "ultralytics"),
]

重新打包即可。


📦 包元数据丢失问题:importlib.metadata.PackageNotFoundError

报错信息:

importlib.metadata.PackageNotFoundError: No package metadata was found for torchvision

🎯 根本原因:

PyInstaller 默认不会打包 metadata,而有些库(如 ultralytics)使用:

importlib.metadata.version("torchvision")

来获取依赖库的版本,因此需要明确告诉它:把 metadata 一起带上!

✅ 解决方法一:打包命令添加参数

pyinstaller --onefile ^--collect-all ultralytics ^--copy-metadata=torch ^--copy-metadata=torchvision ^--copy-metadata=ultralytics ^main_window.py

✅ 解决方法二:使用 .spec 文件方式

.spec 中添加:

from PyInstaller.utils.hooks import copy_metadatadatas += copy_metadata('torch')
datas += copy_metadata('torchvision')
datas += copy_metadata('ultralytics')

❌ DLL 加载失败:WinError 127

错误提示:

OSError: [WinError 127] 找不到指定模块
Error loading "torch\lib\caffe2_detectron_ops.dll"

说明 PyInstaller 没把某些 .dll 一起打包!

✅ 修复步骤:

✅ 第一步:找到 torch 的 lib 路径

运行:

python -c "import torch; print(torch.__path__)"

假设路径为:

G:\anaconda\envs\pcb\Lib\site-packages\torch
✅ 第二步:修改 .spec 文件
import glob
import ostorch_dlls = [(f, os.path.join('torch', 'lib')) for f in glob.glob(r'G:\anaconda\envs\pcb\Lib\site-packages\torch\lib\*.dll')
]a = Analysis(['main_window.py'],...binaries=torch_dlls,datas=[(r"G:\anaconda\envs\pcb\Lib\site-packages\ultralytics", "ultralytics"),(r"G:\anaconda\envs\pcb\Lib\site-packages\torch", "torch"),(r"G:\anaconda\envs\pcb\Lib\site-packages\torchvision", "torchvision"),],...
)

🔧 终极解决方案:用 PyInstaller.__main__ 写一个自定义 package.py

上面的方法,始终有问题。耽误了我一天的时间,最终终于找到了解决的方案。换了一种方法。
import PyInstaller.main
你可以自己写一个 package.py 脚本统一管理打包逻辑:

import PyInstaller.__main__PyInstaller.__main__.run(['--onefile','--nowindowed','-n', 'defect_detect','-i', 'ui/ui_imgs/icons/目标检测.ico','--add-data=ui/ui_imgs/icons;ui/ui_imgs/icons','--add-data=view/style.css;view','--copy-metadata=torch','--copy-metadata=torchvision','--copy-metadata=ultralytics','--collect-all', 'ultralytics','main_window.py',
])

✅ 优点:

  • 不再需要手动修改 .spec
  • 自动包含 metadata
  • 可重复运行,一键打包!

🔚 总结

错误类型解决方案
exe 闪退命令行运行查看报错
动态导入库找不到datas手动添加路径
metadata 丢失添加 --copy-metadata 参数
DLL 加载失败torch/lib/*.dll 添加进 binaries
打包太麻烦用 PyInstaller API 脚本自动化

🧠 附:打包常见库建议参数

库名称打包建议
ultralytics--collect-all ultralytics
torch--copy-metadata=torch + 添加 dll
torchvision--copy-metadata=torchvision
numpy一般自动打包
matplotlib建议 --collect-submodules

如果你觉得本篇文章对你有帮助,欢迎点赞、收藏、转发!🚀
更多 PyInstaller 技术细节、实战案例持续更新中~
有任何问题也欢迎评论区留言交流!


文章转载自:

http://I10PvaUE.drwpn.cn
http://ekrAb712.drwpn.cn
http://NB3PKvnv.drwpn.cn
http://lvhkGwhL.drwpn.cn
http://dj9W6CCs.drwpn.cn
http://W9bdaU9b.drwpn.cn
http://lfFM6jhi.drwpn.cn
http://24G80VjI.drwpn.cn
http://HAY5M3Qw.drwpn.cn
http://8iUuEzfP.drwpn.cn
http://u2DZHyf8.drwpn.cn
http://g5PNgTqS.drwpn.cn
http://H31xvmzK.drwpn.cn
http://f21vEhVb.drwpn.cn
http://Oa0qGn93.drwpn.cn
http://dCtYBTCj.drwpn.cn
http://nWg1s801.drwpn.cn
http://t8fvgTt4.drwpn.cn
http://sXgzYJNf.drwpn.cn
http://KURtVlQU.drwpn.cn
http://wZRAnZ2k.drwpn.cn
http://Etgrrb4G.drwpn.cn
http://CkROuLvu.drwpn.cn
http://VJXGmHNU.drwpn.cn
http://VflNYBj2.drwpn.cn
http://pQbgYha5.drwpn.cn
http://wA9h9UhT.drwpn.cn
http://HYw6nYkx.drwpn.cn
http://N2OckgeV.drwpn.cn
http://Ezc3iltX.drwpn.cn
http://www.dtcms.com/wzjs/700232.html

相关文章:

  • 网站制作一薇做网站一定要用ps吗
  • 网站原创文章不收录沈阳网官网
  • 可以做外链的视频网站网络口碑推广公司
  • 企业网站建设排名推荐定制制作网站哪家好
  • 创建公司网站免费做网站搞友情链接
  • 男女做暖暖的试看网站锦州如何做百度的网站
  • 电子商务网站建设产品建站公司的工作流程
  • 做市场浏览什么网站seo专员有前途吗
  • 酒店宾馆客栈旅馆古典网站源码 asp源码带后台广西公司注册网上核名
  • 网站备案代理wordpress 宠物模板
  • 资阳网站设计为什么不自己做购物网站
  • 四川网站营销seo什么价格咨询公司排行榜
  • 东莞市品牌网站建设价格wordpress 响应式教程
  • 长沙网站制作建设wordpress配置资源
  • 网站如何做sem推广iis网站权限
  • 广西网站建设银行免费申请qq号注册官网
  • 说明怎样做才能通过互联网访问你制作的网站珠海专业网站建设公司
  • 网站建设如何推广企业管理咨询自考
  • 哪里有网站开发公司门户网站后台建设模块
  • 织梦网站更新肉山谷英雄传说新手任务登录英文网站怎么做
  • 广州市增城区建设局网站网站开发质保金
  • 网站如何引导页如何做网页游戏代理
  • 做网站贵么南京小程序制作公司
  • 网站怎么换模板企业邮箱
  • 网站建设和网页设计贵安新区住房和城乡建设厅网站
  • 做经营行网站需要什么app网站开发哪家好
  • 东莞如何编写网站建设做网站哪个简单点
  • 平台制作专业网站制作网站开发原型模板
  • 一般做推广网站的客户需求仕什么网站后台 教程
  • 简单班级网站模板地方资讯网站源码