我指定如下在Drone管道中安装pytest
:
pip install -q pytest
以前直到几天前突然出现以下错误之前,它一直运行良好:
+ python -m pytest test/test_dai_adrecogzer.py
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/local/lib/python2.7/dist-packages/pytest.py", line 14, in <module>
from _pytest.fixtures import fillfixtures as _fillfuncargs
File "/usr/local/lib/python2.7/dist-packages/_pytest/fixtures.py", line 16, in <module>
from more_itertools import flatten
File "/usr/local/lib/python2.7/dist-packages/more_itertools/__init__.py", line 1, in <module>
from more_itertools.more import * # noqa
File "/usr/local/lib/python2.7/dist-packages/more_itertools/more.py", line 329
def _collate(*iterables, key=lambda a: a, reverse=False):
^
SyntaxError: invalid syntax
四处搜寻,发现一个recently post SO question似乎与我要寻找的内容紧密相关。原因似乎是由于more-itertools
最近发布的6.0版本。可接受的答案建议spin
使用more-itertools
的某些特定版本:
setuptools.setup(
setup_requires=['pytest-runner'],
tests_require=['mock', 'more-itertools<6.0.0', 'pytest'],
test_suite='tests',
python_requires='>=2.7',
)
如何将这个建议应用于我的问题?更具体地说,当使用<6.0.0
命令安装more-itertools
时,如何指定pytest
的{{1}}版本?
答案 0 :(得分:1)
您可以指定具有更多itertools旧版本的pytest版本(例如:pip install pytest == 3.5.0)
我不建议将pytest与更多版本的其他迭代器(而不是setuptools中指定的版本)一起安装,因为这可能会导致其他崩溃(pytest可能在某些时候取决于您降级版本没有的某些功能) 。
答案 1 :(得分:0)
根据pytest package specs on PyPI,该软件包需要more-itertools >=4.0.0
。我假设,如果在运行more-itertools
之前显式安装了pip install -q pytest
低于6.0.0,高于4.0.0或等于4.0.0的任何合适版本,则more-itertools
的依赖项检查将已经感到满意,您可以安装pytest
的最新版本。