flake8 E999 python3元类argumen出现语法错误

2024-10-03 17:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用vim进行python开发,flake8作为linter。下面是包含元平面的示例代码。Flake8在class Spam(metaclass=MyMeta)行显示错误E999 SyntaxError:invalid syntax(E)。我正在使用python3,这是在python3中指定自定义元类的正确语法。在

class MyMeta(type):

    def __new__(cls, clsname, bases, clsbody):
        upper_case = {}
        for k, v in clsbody.items():
            if not k.startswith('__'):
                upper_case[k.upper()] = v
        return super().__new__(cls, clsname, bases, upper_case)


class Spam(metaclass=MyMeta):
    foo = 'bar'

有办法解决这个问题吗?在


Tags: newflake8lintervimspamupperpython3class
1条回答
网友
1楼 · 发布于 2024-10-03 17:18:00

好吧,您正在编辑Python3代码,而flake8显然正在检查Python2的语法。在

环顾互联网,强制flake8检查Python3的简单方法是从Python3运行它。在

您可能在Linux或其他Unix上(我从VIM的用法中得到了提示),因此,如果flake8是在系统范围内安装的,那么卸载它,并将其安装在Python3中(在fedora和redhatish发行版中,它是dnf uninstall python2-flake8dnf install python3-flake8)。在

更合适的方法可能是为您的Python项目设置一个virtualenv,使用所需的Python版本,在这个virtualenv中安装flake8,使用pip install flake8,并且从virtualenv内部启动VIM,这样它运行的任何Python脚本或程序都在同一环境中,甚至像“高级自动完成”这样的功能也可以检查项目实际使用的库。在

相关问题 更多 >