python-2.7 - 无法在我的 docker 映像上运行 pytest,“无效语法”
问题描述
我尝试在我的 docker 映像上运行 pytest,但它报告了“无效语法”错误。allure 对 python 版本有要求吗?我的 docker 镜像上的 python 版本是 2.7.13。谁能帮我?
root@ubuntu:/fuego-rw/buildzone# pytest allure_title.py
Traceback (most recent call last):
File "/usr/local/bin/pytest", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/_pytest/config/__init__.py", line 65, in main
config = _prepareconfig(args, plugins)
File "/usr/local/lib/python2.7/dist-packages/_pytest/config/__init__.py", line 214, in _prepareconfig
pluginmanager=pluginmanager, args=args
File "/usr/local/lib/python2.7/dist-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 203, in _multicall
gen.send(outcome)
File "/usr/local/lib/python2.7/dist-packages/_pytest/helpconfig.py", line 94, in pytest_cmdline_parse
config = outcome.get_result()
File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 81, in get_result
_reraise(*ex) # noqa
File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/usr/local/lib/python2.7/dist-packages/_pytest/config/__init__.py", line 789, in pytest_cmdline_parse
self.parse(args)
File "/usr/local/lib/python2.7/dist-packages/_pytest/config/__init__.py", line 997, in parse
self._preparse(args, addopts=addopts)
File "/usr/local/lib/python2.7/dist-packages/_pytest/config/__init__.py", line 943, in _preparse
self.pluginmanager.load_setuptools_entrypoints("pytest11")
File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 299, in load_setuptools_entrypoints
plugin = ep.load()
File "/usr/local/lib/python2.7/dist-packages/importlib_metadata/__init__.py", line 105, in load
module = import_module(match.group('module'))
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/usr/local/lib/python2.7/dist-packages/_pytest/assertion/rewrite.py", line 304, in load_module
exec(co, mod.__dict__)
File "/usr/local/lib/python2.7/dist-packages/allure_pytest/plugin.py", line 3, in <module>
import allure
File "/usr/local/lib/python2.7/dist-packages/allure.py", line 1, in <module>
from allure_commons._allure import title
File "/usr/local/lib/python2.7/dist-packages/allure_commons/__init__.py", line 3, in <module>
from allure_commons._allure import fixture # noqa: F401
File "/usr/local/lib/python2.7/dist-packages/allure_commons/_allure.py", line 165
def __call__(self, func: _TFunc) -> _TFunc:
^
SyntaxError: invalid syntax
解决方案
这个语法:
func: _TFunc
被称为类型提示,意味着变量func
应该是类型_TFunc
(简单来说,num: int
意味着变量num
应该是int
)。
类型提示功能仅在Python3.0 ( PEP 3107 ) 和Python3.5 ( PEP 484 ) 中可用,因此在您使用的版本Python2.7中不可用。
def func(num: int):
print(num)
func(1)
使用 Python2
File "Main.py", line 1
def func(num: int):
^
SyntaxError: invalid syntax
使用 Python3
1
将您的 Python 版本升级到 >=3.5 或使用旧版本的 allure-pytest。我建议升级 Python,因为这样会更可持续。
推荐阅读
- rest - REST API 正确的 URL 结构以加载实体但具有不同的选项
- ios - 处理数据和 UITableViewCell 的更好方法是什么?
- json - 从远程主机上的 JSON 文件中读取变量并将其用作 ansible playbook 中任务的条件
- javascript - 我如何将 CSS 属性设置为 if 语句中的条件?
- vega-lite - 在 react-vega-lite 中使工具提示显示在模态上
- xml - 将 Xml 报告从 jenkins 转换为 pdf 的脚本
- c# - 当分隔符出现在单元格内时,如何使用 EPPlus 添加一行数据?
- computer-vision - 计算机视觉读取曲面上的单词/数字
- node.js - 将 sequelize-cli 与多个数据库一起使用
- mule-esb - 减少 Mule 4 中的部署 jar 大小