You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下PyInstaller打包PySide6 QtWebEngine程序启动失败求助

PySide6 + PyInstaller 单文件打包后Qt WebEngine资源丢失问题(macOS)

问题背景

基于PySide6的Python GUI程序在PyCharm中运行正常,但在macOS(系统默认Python3.9,项目使用Python3.8)环境下,执行命令pyinstaller --onefile test1.py打包成单文件可执行程序后,启动时报错无法找到Qt WebEngine资源。

简化测试代码(可复现问题):

import sys
from PySide6 import QtGui, QtCore, QtWidgets, QtWebEngineWidgets

app = QtWidgets.QApplication()
q = QtWebEngineWidgets.QWebEngineView()
q.load(QtCore.QUrl('https://www.google.com/'))
q.show()
sys.exit(app.exec())

启动错误信息:

Sandboxing disabled by user.
The following paths were searched for Qt WebEngine resources:

/var/folders/l9/985bkq8n0kq97vpvhp4clxvw0000gn/T/_MEIhWjxll/PySide6/Qt/resources
/var/folders/l9/985bkq8n0kq97vpvhp4clxvw0000gn/T/_MEIhWjxll/PySide6/Qt
/Users/duygu/PycharmProjects/fiver_converting
/Users/duygu/.timezone_app
but could not find any.
You may override the default search paths by using QTWEBENGINE_RESOURCES_PATH environment variable.
zsh: abort /Users/duygu/PycharmProjects/fiver_converting/timezone_app

解决方案

方法1:修改.spec文件手动添加资源路径

  1. 生成spec文件(若已生成可跳过此步):
pyinstaller --onefile test1.py
  1. 打开生成的test1.spec文件,在Analysis模块的datas列表中添加Qt WebEngine资源目录映射。替换示例中的路径为你虚拟环境下的实际路径:
a = Analysis(
    ...
    datas=[('/Users/duygu/PycharmProjects/fiver_converting/venv/lib/python3.8/site-packages/PySide6/Qt/resources', 'PySide6/Qt/resources')],
    ...
)
  1. 用修改后的spec文件重新打包:
pyinstaller test1.spec

方法2:打包命令直接指定资源路径

无需修改spec文件,通过--add-data参数直接将资源目录包含进打包文件:

pyinstaller --onefile --add-data "/Users/duygu/PycharmProjects/fiver_converting/venv/lib/python3.8/site-packages/PySide6/Qt/resources:PySide6/Qt/resources" test1.py

注:macOS下路径分隔符用冒号:,Windows系统需替换为分号;

方法3:临时设置环境变量(仅用于测试)

若仅需临时验证程序功能,可在启动可执行文件前设置环境变量指定资源路径:

QTWEBENGINE_RESOURCES_PATH="/Users/duygu/PycharmProjects/fiver_converting/venv/lib/python3.8/site-packages/PySide6/Qt/resources" ./dist/test1

此方法仅适合本地测试,不适合分发程序

额外注意事项

  • 升级PyInstaller到最新版本:旧版本对PySide6 WebEngine的支持可能存在缺陷,执行pip install --upgrade pyinstaller完成升级
  • 单文件打包时,PyInstaller会将资源解压到系统临时目录,需确保资源路径在打包时被正确映射,避免路径引用错误

内容的提问来源于stack exchange,提问作者hobik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:45:24