Python3.6环境用tox运行pytest报错:future feature annotations未定义
解决Python 3.6环境下tox运行pytest的报错问题
报错原因分析
1. SyntaxError: future feature annotations is not defined
from __future__ import annotations是Python 3.7才引入的语法特性,Python 3.6环境无法识别该特性。错误来自_virtualenv.py,说明当前使用的virtualenv版本过高(20.0.0及以上版本),这类版本已不再兼容Python 3.6。
2. ModuleNotFoundError: No module named 'dataclasses'
dataclasses是Python 3.7标准库自带模块,Python 3.6未内置该模块。报错显示pip依赖此模块,说明使用的pip版本过高(21.0及以上版本),高版本pip已放弃对Python 3.6的支持。
解决方案
1. 在tox配置中锁定兼容版本
修改项目根目录下的tox.ini,在[testenv]的deps中添加兼容Python 3.6的virtualenv和pip版本:
[testenv] deps = virtualenv<20.0.0 pip<21.0 pytest # 保留原有pytest依赖
2. 重建tox环境
清理旧的不兼容环境,重新创建符合要求的虚拟环境:
tox -r
执行以上步骤后,tox会使用兼容Python 3.6的virtualenv和pip版本,避免语法错误和模块缺失问题,正常运行pytest。
内容的提问来源于stack exchange,提问作者Lava Sangeetham
相关产品推荐
相关产品推荐

