Closed
Description
Bug report
Bug summary
Tests are supposed to run with Agg backend, but if you have a different backend configured, and your environment does not have its dependencies available, the tests try to load it instead.
As matplotlib.use('agg', force=True)
is called first, this implies it should be ignoring failure to load the configured backend, since it's not Agg
Code for reproduction
$ conda create -n test python=3.6 numpy # etc., but not Qt
$ conda activate test
$ pip install -e .
$ vim ~/.config/matplotlib/matplotlibrc # Set backend to Qt5Agg
$ pytest -n4
Actual outcome
___________________________________________________________ ERROR collecting test session ____________________________________________________________
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/config/__init__.py:495: in _importconftest
return self._conftestpath2mod[key]
E KeyError: PosixPath('/home/elliott/code/matplotlib/lib/matplotlib/tests/conftest.py')
During handling of the above exception, another exception occurred:
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/py/_path/common.py:383: in visit
for x in Visitor(fil, rec, ignore, bf, sort).gen(self):
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/py/_path/common.py:435: in gen
for p in self.gen(subdir):
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/py/_path/common.py:424: in gen
dirs = self.optsort([p for p in entries
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/py/_path/common.py:425: in <listcomp>
if p.check(dir=1) and (rec is None or rec(p))])
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/nodes.py:506: in _recurse
ihook = self._gethookproxy(dirpath)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/nodes.py:487: in _gethookproxy
my_conftestmodules = pm._getconftestmodules(fspath)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/config/__init__.py:473: in _getconftestmodules
mod = self._importconftest(conftestpath)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/config/__init__.py:520: in _importconftest
self.consider_conftest(mod)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/config/__init__.py:575: in consider_conftest
self.register(conftestmodule, name=conftestmodule.__file__)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/_pytest/config/__init__.py:379: in register
ret = super().register(plugin, name)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/pluggy/manager.py:121: in register
hook._maybe_apply_history(hookimpl)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/pluggy/hooks.py:336: in _maybe_apply_history
res = self._hookexec(self, [method], kwargs)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/pluggy/manager.py:87: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/var/container/conda/envs/mpl36npm/lib/python3.6/site-packages/pluggy/manager.py:81: in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
lib/matplotlib/testing/conftest.py:23: in pytest_configure
matplotlib.use('agg', force=True)
lib/matplotlib/__init__.py:1144: in use
from matplotlib import pyplot as plt
lib/matplotlib/pyplot.py:2327: in <module>
switch_backend(rcParams["backend"])
lib/matplotlib/pyplot.py:259: in switch_backend
class backend_mod(matplotlib.backend_bases._Backend):
lib/matplotlib/pyplot.py:260: in backend_mod
locals().update(vars(importlib.import_module(backend_name)))
/var/container/conda/envs/mpl36npm/lib/python3.6/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
lib/matplotlib/backends/backend_qt5agg.py:11: in <module>
from .backend_qt5 import (
lib/matplotlib/backends/backend_qt5.py:16: in <module>
import matplotlib.backends.qt_editor.figureoptions as figureoptions
lib/matplotlib/backends/qt_editor/figureoptions.py:11: in <module>
from matplotlib.backends.qt_compat import QtGui
lib/matplotlib/backends/qt_compat.py:173: in <module>
raise ImportError("Failed to import any qt binding")
E ImportError: Failed to import any qt binding
============================================================== short test summary info ===============================================================
ERROR - ImportError: Failed to import any qt binding
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Matplotlib version
- Operating system: Fedora 31
- Matplotlib version: master 4a143b9
- Matplotlib backend (
print(matplotlib.get_backend())
): Qt5Agg - Python version: 3.6.10
Metadata
Metadata
Assignees
Labels
No labels