繁体   English   中英

将 pyqt5 与 mayavi 和 pyvirtualdisplay 一起使用时,Unbutu 22.04 LTS 上的 Pytest 核心转储

[英]Pytest core dump on Unbutu 22.04 LTS when using pyqt5 with mayavi and pyvirtualdisplay

想要我想做的事:

我想在 Ubuntu 22.04 LTS 上运行这些要求:

# Bug on Ub.22.04 but avoids AttributeError: 'Timer' object has no attribute 'start' on other OS
pyqt5==5.15.7

# These together work:
mayavi==4.7.4
PyVirtualDisplay==3.0
pytest==7.1.2

所以我可以运行这个测试:

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;

问题

将 PyQt5 添加到依赖项列表似乎会破坏程序在 Ubuntu 22.04 LTS 上的行为(尽管它适用于 Ubuntu 20.04 LTS 和 MacOS 上的多个 Python 3 版本。

输出错误如下:

Run python3 -m pip install pytest
  python3 -m pip install pytest
  cd tests
  python3 -m pytest
  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
Defaulting to user installation because normal site-packages is not writeable
Collecting pytest
  Downloading pytest-7.1.2-py3-none-any.whl (297 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 297.0/297.0 KB 8.8 MB/s eta 0:00:00
Collecting pluggy<2.0,>=0.12
  Downloading pluggy-1.0.0-py2.py3-none-any.whl (13 kB)
Collecting iniconfig
  Downloading iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB)
Requirement already satisfied: attrs>=19.2.0 in /usr/lib/python3/dist-packages (from pytest) (21.2.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from pytest) (21.3)
Collecting py>=1.8.2
  Downloading py-1.11.0-py2.py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.7/98.7 KB 23.2 MB/s eta 0:00:00
Collecting tomli>=1.0.0
  Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/lib/python3/dist-packages (from packaging->pytest) (2.4.7)
Installing collected packages: iniconfig, tomli, py, pluggy, pytest
Successfully installed iniconfig-1.1.1 pluggy-1.0.0 py-1.11.0 pytest-7.1.2 tomli-2.0.1
Fatal Python error: Aborted
Current thread 0x00007f99b32c8000 (most recent call first):
  File "/home/runner/.local/lib/python3.10/site-packages/pyface/ui/qt4/init.py", line 36 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "<frozen importlib._bootstrap>", line 1050 in _gcd_import
  File "/usr/lib/python3.10/importlib/__init__.py", line 126 in import_module
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 171 in load
  File "/home/runner/.local/lib/python3.10/site-packages/pyface/base_toolkit.py", line 218 in import_toolkit
  File "/home/runner/.local/lib/python3.10/site-packages/pyface/base_toolkit.py", line 263 in find_toolkit
  File "/home/runner/.local/lib/python3.10/site-packages/pyface/toolkit.py", line 23 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/qt4/toolkit.py", line 33 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1078 in _handle_fromlist
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/qt4/__init__.py", line 35 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "<frozen importlib._bootstrap>", line 1050 in _gcd_import
  File "/usr/lib/python3.10/importlib/__init__.py", line 126 in import_module
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 171 in load
  File "/home/runner/.local/lib/python3.10/site-packages/pyface/base_toolkit.py", line 282 in find_toolkit
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/toolkit.py", line 110 in toolkit
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/toolkit_traits.py", line 43 in ColorTrait
  File "/home/runner/.local/lib/python3.10/site-packages/traits/trait_factory.py", line 40 in __call__
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/editors/code_editor.py", line 32 in CodeEditor
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/editors/code_editor.py", line 21 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/editors/api.py", line 96 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/editors/__init__.py", line 16 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 992 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/traitsui/api.py", line 257 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/mayavi/preferences/preference_manager.py", line 29 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/mayavi/preferences/api.py", line 4 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/mayavi/tools/engine_manager.py", line 12 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/mayavi/tools/camera.py", line 24 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "/home/runner/.local/lib/python3.10/site-packages/mayavi/mlab.py", line 16 in <module>
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 883 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1078 in _handle_fromlist
  File "/home/runner/work/pyvirtualdisplay-bug/pyvirtualdisplay-bug/tests/test_animate.py", line 8 in <module>
  File "/home/runner/.local/lib/python3.10/site-packages/_pytest/assertion/rewrite.py", line 168 in exec_module
  ...
Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg.lapack_lite, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, traits.ctraits, PyQt5.QtCore, PyQt5.QtGui, PyQt5.QtWidgets, PyQt5.QtPrintSupport, PyQt5.QtNetwork, PyQt5.QtQml, PyQt5.QtBluetooth, PyQt5.QtDBus, PyQt5.QtDesigner, PyQt5.QtHelp, PyQt5.QtNfc, PyQt5.QtOpenGL, PyQt5.QtPositioning, PyQt5.QtLocation, PyQt5.QtQuick, PyQt5.QtQuick3D, PyQt5.QtQuickWidgets, PyQt5.QtRemoteObjects, PyQt5.QtSensors, PyQt5.QtSerialPort, PyQt5.QtSql, PyQt5.QtSvg, PyQt5.QtTest, PyQt5.QtTextToSpeech, PyQt5.QtWebChannel, PyQt5.QtWebSockets, PyQt5.QtX11Extras, PyQt5.QtXml, PyQt5.QtXmlPatterns (total: 44)
/home/runner/work/_temp/0585cdff-a041-431e-b28d-a33e621d22b2.sh: line 3:  6351 Aborted                 (core dumped) python3 -m pytest

错误再现

我创建了一个小仓库来重现这个问题。 我创建了一堆分支,在其中我切断了一些 python 依赖项,直到我可以将 pyqt5 隔离为破坏工作状态的分支:这些更改记录在自述文件中。 我知道使用外部存储库并不理想,但因为在这种情况下这是一个 Github Action 问题(它适用于我本地的 Ubuntu 22.04),也许它有意义?

所以问题是 Ubuntu 22.05 上没有安装 PyQt5(Qt 的 python 包装器)的系统依赖项。

我最初尝试安装所需的系统依赖qt5-default (即,适用于 Ubuntu 20.04 的),但如herehere所述, qt5-default软件包已在 Ubuntu 21.04 中删除,当时我认为(错误的决定)那是因为该软件包现在随发行版一起提供。 好吧,这不是^^

解决方法是安装qt5-default依赖项,其中:

sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools

这足以让项目在 Ubuntu 22.04 LTS 上运行,这显然是我的错误,但我想知道错误消息中的什么内容可能会让我早点走上正确的轨道(缺少系统依赖项)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM