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

Ubuntu 22.04下PyQt5+mayavi+PyVirtualDisplay运行Pytest coredump

部署需求

需要在Ubuntu 22.04 LTS环境中部署指定版本依赖,用于运行可视化相关测试用例,依赖版本要求如下:

# 该版本可规避其他系统下AttributeError: 'Timer' object has no attribute 'start'报错,但在Ubuntu22.04存在异常
pyqt5==5.15.7

# 以下依赖组合可正常协同工作
mayavi==4.7.4
PyVirtualDisplay==3.0
pytest==7.1.2
测试执行逻辑

测试执行流程为:先通过PyVirtualDisplay启动分辨率为1280*1024的无界面虚拟显示,再导入mayavi.mlab模块,执行基础断言逻辑,测试代码如下:

import pytest

from pyvirtualdisplay import Display
import os
display = Display(visible=0, size=(1280, 1024))
display.start()

from mayavi import mlab

def foo(tmp_path):
    assert 0 == 0
故障现象
  • 指定依赖组合在Ubuntu 20.04 LTS、多Python3版本的MacOS系统中均可正常运行
  • 故障仅复现于GitHub Action CI的Ubuntu 22.04 LTS环境,本地安装的同版本Ubuntu 22.04系统运行无异常
  • 引入PyQt5依赖后执行python3 -m pytest命令会触发致命Python错误,进程异常中止并生成core dump
  • 错误调用栈显示异常触发于pyface加载Qt4工具包、traitsui初始化、逐层导入mayavi模块的流程中,进程中止前已加载numpy、traits、全量PyQt5相关扩展模块
问题定位

已搭建公开GitHub复现仓库,通过创建多个分支逐步裁剪依赖的方式,最终定位 PyQt5 为导致原本可正常运行的依赖组合失效的关联组件,仓库README中记录了完整的依赖调整验证过程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:24:23