【问题标题】:Can't create (python) QApplication in github action无法在 github 操作中创建(python)QApplication
【发布时间】:2020-06-26 18:47:14
【问题描述】:

我的 (python) Qt gui 有一些单元测试,它们需要 QApplication 实例,但创建一个对我来说总是失败(即以核心转储和应用程序终止与QApplication() 一致)。到目前为止我尝试过的是:

  • 创建方法:
    • 模块级别的普通app = QApplication()
    • app = QApplication(['--platform offscreen'])
    • 使用 pytest-qt 中的夹具来管理 QApplication 对象的创建,即将qtbot 传递给我的测试
  • 我什至尝试了 qt 的两个 python 端口,即:
    • PyQt5
    • PySide2
  • 虚拟屏幕:

我已尝试使用https://github.com/nektos/act 在本地调试此问题,但使用此方法问题无法重现(即一切都按预期工作),直到我添加了herbstluftwm,即我唯一能够实现的是在本地它也开始失败。

我还能检查什么?您是否看到在 github 操作上成功创建了 QApplication? 顺便提一句。如何让 Qt 的输出在 github 操作中可见? (我已经添加了env: QT_DEBUG_PLUGINS: 1 并且仍然看不到任何错误)

【问题讨论】:

标签: python pyqt5 pyside2 github-actions pytest-qt


【解决方案1】:

感谢@eyllanesc 对 MRE 的请求,我创建了这个 https://github.com/konserw/mre 最小示例 repo,它允许我自己找到解决方案。事实证明,你需要安装xvfblibxkbcommon-x11-0,但你不能运行xvfb服务或herbstluftwm。然后您需要使用xvfb-run 运行您的测试命令(在我的情况下为coverage),如果是github 操作,则需要覆盖的绝对路径,如下所示:

xvfb-run `which coverage` run -m pytest

我希望这将有助于 github 操作的未来用户努力让 PyQt5 或 PySide2 GUI 测试运行。

顺便说一句。 pytest 正在使 Qt 的QT_DEBUG_PLUGINS 的输出静音,因此用纯 python 调用替换测试命令和一些重现问题的最小脚本是关键。见https://github.com/konserw/mre/runs/509156615?check_suite_focus=true

【讨论】:

  • 我使用安装了 pip 的 PyQt5。除了你所说的之外,我还必须使用 apt 安装所有这些软件包:sudo apt install -y xvfb x11-utils libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0
  • 使用apt 安装的软件包列表更简单。只需运行此代码:sudo apt-get -qq install libxcb-xinerama0 pyqt5-dev-tools,即可满足您的所有需求。
猜你喜欢
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 2023-02-25
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多