Maya standalone初始化触发Qt错误致mayapy崩溃求助
问题场景
在Windows11 + Maya2023.0环境下,通过mayapy交互环境初始化maya.standalone时触发Qt相关错误,进程直接终止,无法执行后续代码。
操作步骤
- 打开命令提示符/PowerShell,执行
mayapy进入交互环境 - 运行以下代码:
import maya.standalone as standalone standalone.initialize(name='python')
触发的错误信息
Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
qt.svg: Cannot open file ':/expression.svg', because: No such file or directory
qt.svg: Cannot open file ':/expression.svg', because: No such file or directory
QWidget: Cannot create a QWidget without QApplication
解决方案
1. 提前初始化Qt环境
问题根源是Maya standalone初始化时,部分插件尝试创建Qt控件但QApplication尚未初始化。可在调用standalone.initialize()前手动完成Qt环境配置:
import sys from PySide2.QtWidgets import QApplication from PySide2.QtCore import Qt # 设置OpenGL共享上下文属性 QApplication.setAttribute(Qt.AA_ShareOpenGLContexts) # 初始化QApplication app = QApplication(sys.argv) import maya.standalone as standalone standalone.initialize(name='python')
此方法能避免Qt控件创建时的上下文缺失错误,保留Maya的UI相关插件功能。
2. 禁用不必要的Qt插件(纯后台场景)
如果仅需要后台批处理,不需要任何UI功能,可在启动mayapy前通过环境变量禁用Qt WebEngine和SVG插件:
在命令提示符/PowerShell中执行:
set QT_QPA_PLATFORM=offscreen set QT_DISABLE_PLUGINS=webenginecore,svg
再启动mayapy执行初始化代码,能彻底规避Qt相关的插件加载错误。
3. 修复Maya安装完整性
:/expression.svg文件缺失可能是Maya安装损坏导致,可通过修复安装解决:
- 打开Windows设置 → 应用 → 找到Autodesk Maya 2023 → 点击「修改」→ 选择「修复」选项,等待修复完成后重新测试。
验证方法
执行修正后的代码后,若mayapy未退出,可运行以下测试代码确认环境正常:
import maya.cmds as cmds cmds.polyCube() print(cmds.ls())
若输出包含创建的立方体名称(如pCube1),说明standalone环境初始化成功。
内容的提问来源于stack exchange,提问作者Lily

