python打包exe文件提示:ImportError: DLL load failed while importing QtWidgets: 找不到指定的模块。

开发场景:

近期在用PySide6替代pyqt5的功能,在使用
from PySide6.QtGui import QTextCursor
导入时,始终无法替换,本地服务可以运行,正常使用

在这里插入图片描述
pinstaller 后,打包成exe ,拷贝其他服务器无法正常使用,提示以上报错

在这里插入图片描述
然而拷贝到其他未安装python环境的电脑就提示

Traceback (most recent call last):
File “bondcopy.py”, line 24, in
ImportError: DLL load failed while importing QtWidgets: 找不到指定的模块。
[PYI-3288:ERROR] Failed to execute script ‘bondcopy’ due to unhandled exception!


解决思路

卸载安装
①卸载安装PySide6
卸载安装PySide6
pip uninstall PySide6
pip install PySide6

②更新pyinstaller
之前版本是
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install --upgrade pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

③更新python
python版本以前是3.8版本,为此特特意更新到最新版本 3.13

④咨询AI
咨询ai 也是一头雾水,如下

使用 --collect-all 参数
PyInstaller 可能无法自动捕获 PySide6 的所有依赖项。手动指定 PySide6 的模块路径:
pyinstaller --onefile --collect-all PySide6.QtGui --collect-all PySide6.QtWidgets --collect-all PySide6.QtCore your_script.py
手动添加 DLL 路径
能是 PyInstaller 未正确捕获 Qt 的 DLL 路径。可以尝试手动将 Qt 的 DLL 路径添加到环境变量中:

import os
import sys

if getattr(sys, ‘frozen’, False):
os.environ[‘PATH’] = os.path.join(sys._MEIPASS, ‘PySide6’) + ‘;’ + os.environ[‘PATH’]

使用 --add-data 参数
**手动将 PySide6 的依赖项添加到打包文件中:
pyinstaller --onefile --add-data “path_to_pyside6_dlls;.” your_script.py

调试模式
使用 --debug 参数生成调试信息,查看打包后的文件结构:
pyinstaller --onefile --debug your_script.py

使用 --hidden-import
如果某些模块未被自动检测到,可以手动指定隐藏导入:
pyinstaller --onefile --hidden-import PySide6.QtGui --hidden-import PySide6.QtWidgets your_script.py
最小化示例测试
创建一个最简单的 PySide6 程序(如仅显示一个窗口),然后尝试打包。如果最小化示例可以运行,则问题可能出在原始代码的某些特定部分。
`import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle(“PySide6 Example”)
label = QLabel(“Hello, PySide6!”, parent=window)
window.show()
sys.exit(app.exec())
`
打包在这里插入图片描述
其他服务器运行
在这里插入图片描述

日志分析:
原因还是在打包工具中,本地环境运行ok,但是更新其他电脑不能正常使用,分析日志

.
17617 INFO: checking PKG
17617 INFO: Building PKG because PKG-00.toc is non existent
17617 INFO: Building PKG (CArchive) test.pkg
17683 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\styles\qmodernwindowsstyle.dll due to CFG!
17685 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qico.dll due to CFG!
17687 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qicns.dll due to CFG!
17689 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qsvg.dll due to CFG!
17691 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\platforms\qminimal.dll due to CFG!
17692 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qtga.dll due to CFG!
17694 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\generic\qtuiotouchplugin.dll due to CFG!
17695 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qwebp.dll due to CFG!
17696 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\platforminputcontexts\qtvirtualkeyboardplugin.dll due to CFG!
17698 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\iconengines\qsvgicon.dll due to CFG!
17702 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qtiff.dll due to CFG!
17704 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qjpeg.dll due to CFG!
17705 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qwbmp.dll due to CFG!
17707 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qpdf.dll due to CFG!
17709 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\platforms\qdirect2d.dll due to CFG!
17712 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\platforms\qwindows.dll due to CFG!
17713 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\imageformats\qgif.dll due to CFG!
17715 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\platforms\qoffscreen.dll due to CFG!
17830 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\networkinformation\qnetworklistmanager.dll due to CFG!
17832 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\tls\qopensslbackend.dll due to CFG!
17834 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\tls\qschannelbackend.dll due to CFG!
17837 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\plugins\tls\qcertonlybackend.dll due to CFG!
18049 INFO: Disabling UPX for D:\develop\python\VCRUNTIME140.dll due to CFG!
18051 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Core.dll due to CFG!
18052 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Gui.dll due to CFG!
18055 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\shiboken6\MSVCP140.dll due to CFG!
18056 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Widgets.dll due to CFG!
18058 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Svg.dll due to CFG!
18059 INFO: Disabling UPX for D:\develop\python\VCRUNTIME140_1.dll due to CFG!
18060 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Network.dll due to CFG!
18061 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6VirtualKeyboard.dll due to CFG!
18065 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Pdf.dll due to CFG!
18123 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\MSVCP140.dll due to CFG!
18132 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\VCRUNTIME140_1.dll due to CFG!
18141 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\VCRUNTIME140.dll due to CFG!
18147 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\shiboken6\VCRUNTIME140.dll due to CFG!
18149 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\shiboken6\VCRUNTIME140_1.dll due to CFG!
18151 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\MSVCP140_2.dll due to CFG!
18153 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\MSVCP140_1.dll due to CFG!
18154 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Qml.dll due to CFG!
18156 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6Quick.dll due to CFG!
18158 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6OpenGL.dll due to CFG!
18159 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6QmlMeta.dll due to CFG!
18162 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6QmlModels.dll due to CFG!
18164 INFO: Disabling UPX for D:\develop\python\Lib\site-packages\PySide6\Qt6QmlWorkerScript.dll due to CFG!
26863 INFO: Building PKG (CArchive) test.pkg completed successfully.
26869 INFO: Bootloader D:\develop\python\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\runw.exe
26870 INFO: checking EXE
26870 INFO: Building EXE because EXE-00.toc is non existent
26870 INFO: Building EXE from EXE-00.toc

投喂ai ,发现结果如下:
从日志信息来看,您正在使用PyInstaller 6.13.0版本将一个Python脚本(test.py)打包成可执行文件。您的Python环境版本为3.13.3,操作系统为Windows 10。打包过程包括分析模块、创建base_library.zip、处理动态库等步骤。由于某些DLL文件启用了CFG(Control Flow Guard),UPX(用于压缩可执行文件)被禁用。最终,PyInstaller成功地将脚本打包成了一个名为test.exe的可执行文件,并将其放置在D:\demo\dist目录下。

所以是否需要启动CFG、UPX呢

解决方案:

以前用PYQT5 是可以使用的,现在想更新成PySide6,折腾了好几天了,不知道有没有道友有其他方式推荐,可以解决PySide6问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值