0

我需要同时支持 python 3.8 和低于 3.8 的版本,但是我需要导入到我的存根 (*.pyi) 文件中的包在 <3.8 中具有不同的名称

import sys
if sys.version_info.minor < 8:
    import xyz
else:
    import zyx

一般来说,这应该可以完成这项工作,但是当我使用 *.pyi 文件配置(flake8 --config flake8-pyi.ini)运行 flake8 时,我得到了这个:

Y002 If test must be a simple comparison against sys.platform or sys.version_info

有什么想法可以做些什么吗?

提前致谢!

4

1 回答 1

0

flake8-pyi 的描述(一个 flake8 插件,不是 flake8 本身的一部分):

Y002:如果测试必须是与 sys.platform 或 sys.version_info 的简单比较。存根文件支持简单的条件来指示 Python 版本或平台之间的差异,但类型检查器只能理解 Python 语法的有限子集,并且此警告会触发类型检查器可能无法理解的条件。

解决方法是将您的条件更改为:

if sys.version_info < (3, 8):

请注意,您的代码会中断2.8(是的,有些人会这样做!)4.0因此您应该小心省略比较的部分;)-我编写了一个 flake8 插件,它有助于对可能有问题的条件进行 lint:flake8- 2020

于 2020-04-12T16:16:28.983 回答