2017-10-25 2 views
6

Ich pflege eine Open-Source-Bibliothek, xarray, die Integrationstests auf Travis-CI mit Pytest ausführt. Wir installieren das wissenschaftliche Python mit Stack Conda.pytest schlägt fehl mit ModuleNotFoundError und Name des unbenutzten Plugins

Earlier today, begannen unsere zwei unserer fünf Test-Builds (Python 3.5 und 3.6, aber nicht Python 2.7 oder 3.4) aus keinem ersichtlichen Grund. pytest selbst versagt, mit einem mystifying Trackbacks:

$ py.test xarray --cov=xarray --cov-config ci/.coveragerc --cov-report term-missing --verbose $EXTRA_FLAGS 
Traceback (most recent call last): 
    File "/home/travis/miniconda/envs/test_env/bin/py.test", line 6, in <module> 
    sys.exit(py.test.main()) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/config.py", line 49, in main 
    config = _prepareconfig(args, plugins) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/config.py", line 168, in _prepareconfig 
    pluginmanager=pluginmanager, args=args) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__ 
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec 
    return self._inner_hookexec(hook, methods, kwargs) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda> 
    _MultiCall(methods, kwargs, hook.spec_opts).execute() 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute 
    return _wrapped_call(hook_impl.function(*args), self.execute) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 250, in _wrapped_call 
    wrap_controller.send(call_outcome) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/helpconfig.py", line 68, in pytest_cmdline_parse 
    config = outcome.get_result() 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result 
    raise ex[1].with_traceback(ex[2]) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__ 
    self.result = func() 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute 
    res = hook_impl.function(*args) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/config.py", line 957, in pytest_cmdline_parse 
    self.parse(args) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/config.py", line 1121, in parse 
    self._preparse(args, addopts=addopts) 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/config.py", line 1084, in _preparse 
    self.pluginmanager.load_setuptools_entrypoints('pytest11') 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/_pytest/vendored_packages/pluggy.py", line 510, in load_setuptools_entrypoints 
    plugin = ep.load() 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2409, in load 
    return self.resolve() 
    File "/home/travis/miniconda/envs/test_env/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2415, in resolve 
    module = __import__(self.module_name, fromlist=['__name__'], level=0) 
ModuleNotFoundError: No module named 'hypothesis.extra.pytestplugin' 

Ein paar Dinge sind überraschende Dinge mit mir darüber:

  1. Wir verwenden keine Hypothese oder hypothesis.extra.pytestplugin installieren. Ich habe keine Ahnung, woher das kommt.
  2. Es gibt nichts Offensichtliches, das sich geändert hat, um diesen Fehler auszulösen. Es erschien zuerst nach einem one line doc change. Die installierten Python-Bibliotheken, einschließlich der von Conda installierten spezifischen Binär-Builds, scheinen genau gleich zu sein. (Sie können die build outputs selbst diff, wenn Sie mögen, though.)

Wenn Sie irgendwelche Hinweise oder Vermutungen über das, was auf das geht, Ihre Hilfe würde geschätzt! Ich weiß nicht einmal, wo im Stapel ein Fehler liegt.

Antwort

2

ich in diese ein wenig gegraben:

  • Conda Schmiede uns hypothesis: 3.33.0-py36_0 gibt und pytest wird es als Plugin geladen
  • abstecken Conda Version von hypothesis-3.23 behebt das Problem.
  • Deinstallation Hypothese löst das Problem
  • Pip Installation Hypothese das Problem, so

löst, ich denke, dass wir etwas schief gelaufen ist mit der Conda-Schmiede Build Hypothese schließen kann.

Es ist eine offene Frage auf der Seite conda-forge hierfür:

https://github.com/conda-forge/hypothesis-feedstock/issues/16

Verwandte Themen