Почему pytest-qt не может найти PyQt для Python 3.4? - PullRequest
0 голосов
/ 07 июня 2018

Я использую 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?

...