Pyflakes "invalid syntax" 并在花括号中打印函数的变量

Pyflakes "invalid syntax" and print function's variable in curly braces

我安装了 Sublime Text 3、SublimeLinter 插件和 pyflakes linter。 在 pip pyflakes 版本是 1.6.0。 OS 赢得 7 x86。

my_name = 'Name'
print(f"My name is {my_name}.")

这里是错误:

SublimeLinter: pyflakes output:
ex3.py:9:30: invalid syntax
print(f"My name is {my_name}.")
                             ^ 

此外,通过这种构造我没有错误:

print("My name is {}.".format(my_name))

代码运行得很好,但为什么 pyflakes 给我这个错误呢?是 pyflakes 问题还是什么?

这是一个已知问题,请参阅此处:

https://gitlab.com/pycqa/flake8/issues/296

目前版本似乎已经修复了...

编辑:由于您使用的是最新版本,也许您正在 运行 遇到 sublime-linter 的问题,如下所示:

https://forum.sublimetext.com/t/sublimelinter-pyflakes-not-matching-pyflakes-from-cli/31348/3

要对此进行测试,您可以 运行 在 sublime 之外的命令行中使用 pyflakes 命令来查看它是否有效。

Edit2:根据提问者的评论,使用 SublimeLinter-flake8 而不是 SublimeLinter-pyflakes 与来自 python 3.6+.

的 f-strings 兼容

(另外,对于双重发布的答案感到抱歉。感谢您删除一个,@Andy。我不知道那里发生了什么。)

所以,最好的方法是使用 SublimeLinter-flake8 而不是 SublimeLinter-pyflakespython 3.6+,因为 pyflakes linter 与 3.6 尚不兼容。 flake8 的功能与 pyflakes 相同,甚至更多。