gpt4 book ai didi

Python 2.6.6 的 Pytest 版本

转载 作者:行者123 更新时间:2023-12-04 16:45:25 27 4
gpt4 key购买 nike

我正在尝试在 Python 2.6.6 RHEL 6.10 上设置 pytest。

正如 official change log 中所指出的pytest 3.3.0不支持 python 2.6,因此 pytest < 3.3应该被考虑到。我可以成功安装 pytest=3.2.5 ,但是当我执行一个简单的测试时,我收到以下错误:

Traceback (most recent call last):
File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/usr/lib/python2.6/site-packages/pytest.py", line 17, in <module>
raise SystemExit(pytest.main())
File "/usr/lib/python2.6/site-packages/_pytest/config.py", line 57, in main
return config.hook.pytest_cmdline_main(config=config)
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
res = hook_impl.function(*args)
File "/usr/lib/python2.6/site-packages/_pytest/main.py", line 127, in pytest_cmdline_main
return wrap_session(config, _main)
File "/usr/lib/python2.6/site-packages/_pytest/main.py", line 111, in wrap_session
config.notify_exception(excinfo, config.option)
File "/usr/lib/python2.6/site-packages/_pytest/config.py", line 936, in notify_exception
excinfo=excinfo)
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
File "/usr/lib/python2.6/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
res = hook_impl.function(*args)
File "/usr/lib/python2.6/site-packages/_pytest/terminal.py", line 163, in pytest_internalerror
for line in py.builtin.text(excrepr).split("\n"):
File "/usr/lib/python2.6/site-packages/_pytest/_code/code.py", line 664, in __unicode__
self.toterminal(tw)
File "/usr/lib/python2.6/site-packages/_pytest/_code/code.py", line 709, in toterminal
self.reprtraceback.toterminal(tw)
File "/usr/lib/python2.6/site-packages/_pytest/_code/code.py", line 725, in toterminal
entry.toterminal(tw)
File "/usr/lib/python2.6/site-packages/_pytest/_code/code.py", line 748, in toterminal
tw.write("".join(self.lines))
File "/usr/lib/python2.6/site-packages/py/_io/terminalwriter.py", line 250, in write
self._update_chars_on_current_line(msg)
File "/usr/lib/python2.6/site-packages/py/_io/terminalwriter.py", line 262, in _update_chars_on_current_line
current_line = current_line.decode('utf-8', errors='replace')
TypeError: decode() takes no keyword arguments



快速搜索表明 decode()在 python 2.7 中接受参数。
如果这是依赖的情况,那么推荐 Python 2.6.6 使用哪个版本的 pytest ?

最佳答案

pytest==3.2.5 是仍然支持 Python 2.6 的版本,但是仅仅因为 pytest==3.2.5 支持 Python 2.6,并不一定意味着它的依赖项作为在他们的 setup.py 中指定的库作者支持 Python 2.6。

大多数包使用大于约束来指定它们的依赖关系,例如libxxx>=1.2.3,以确保您在依赖库作者发布它们时自动获得更新版本的依赖项,但您永远不会下载不兼容的旧版本。在大多数情况下,这很好,因为它减少了库作者的工作量,但这意味着如果该依赖库发布了一个较新的版本,该版本不再支持该依赖库仍然支持的特定版本,那么您将把它拉进来,因为有不少约束可以防止这种情况发生。

在这种情况下,根据您显示的回溯,拉取的 py.io 库不支持 python 2.6。您需要将 py.io 降级并固定到仍支持 2.6 的旧版本。

根据py.io changelog ,最后一个仍然支持 Python 2.6 的版本是 py.io==1.4.34。

如果支持旧软件对您很重要,您应该创建一个 requirements.txt 文件来卡住依赖项列表,而不是依赖于包的自动版本解析。

关于Python 2.6.6 的 Pytest 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com