Я использую AppVeyor (думаю, Travis, но для Windows), чтобы снова запустить несколько тестов нескольких разных версий Python.Тесты зависят от PyQt и pytest-qt.В некоторых конфигурациях pytest-qt не может найти PyQt, жалуясь:
pytest-qt требует установки PySide, PySide2, PyQt4 или PyQt5
PyQt5тесты работают, но тесты также должны запускать более старые версии Python, где требуется PyQt4.
Python 2.7, 32-битный
На Python 2.7 (32-битный), я устанавливаю PyQtс conda:
conda install -q pyqt=4
Он успешно устанавливает pyqt-4.11.4-py27_7
Затем я устанавливаю pytest-qt с помощью pip:
pip install pytest pytest-cov pytest-qt
Он успешно устанавливает pytest-qt-2.4.0.
Затем я запускаю тесты.Это нормально.
Python 2.7, 64-битный
Точно такая же история.Работает нормально.
Python 3.4, 64-bit
На этот раз он устанавливает pyqt 4.11.4-py34_7, плюс ту же версию pytest-qt, но при запуске теста вылетает:
py.test tests -v
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\_pytest\main.py", line 174, in wrap_session
INTERNALERROR> config._do_configure()
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\_pytest\config.py", line 957, in _do_configure
INTERNALERROR> self.hook.pytest_configure.call_historic(kwargs=dict(config=self))
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pluggy\__init__.py", line 628, in call_historic
INTERNALERROR> res = self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pluggy\__init__.py", line 222, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pluggy\__init__.py", line 216, in <lambda>
INTERNALERROR> firstresult=hook.spec_opts.get('firstresult'),
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pluggy\callers.py", line 201, in _multicall
INTERNALERROR> return outcome.get_result()
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pluggy\callers.py", line 76, in get_result
INTERNALERROR> raise ex[1].with_traceback(ex[2])
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pluggy\callers.py", line 180, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pytestqt\plugin.py", line 187, in pytest_configure
INTERNALERROR> qt_api.set_qt_api(config.getini('qt_api'))
INTERNALERROR> File "c:\miniconda34-x64\lib\site-packages\pytestqt\qt_compat.py", line 60, in set_qt_api
INTERNALERROR> raise RuntimeError(msg)
INTERNALERROR> RuntimeError: pytest-qt requires either PySide, PySide2, PyQt4 or PyQt5 to be installed
Command exited with code 3
Я попытался указать переменную среды PYTEST_QT_API=pyqt4
или PYTEST_QT_API=pyqt4v2
, но он пожаловался:
ImportError: Ошибка загрузки DLL: указанный модуль не найден.
Я не могу понять, что может отличаться для Python 3.4.Что мне нужно сделать, чтобы помочь pytest-qt найти установку PyQt?