Python 水蟒&x2B;SublimiteText,报告类型提示为错误
我在SublimiteText3和anaconda中有两个python项目。出于某些特殊原因,其中只有一种情况下,anaconda报告类型暗示(PEP 0484)为“无效语法”错误(对于参数和函数类型)。原因是什么?Anaconda对类型提示的应用(受函数注释和静态类型检查器的影响)仅适用于Python 3。我假设抛出错误的项目正在被Python 2删除。要扩展Anaconda的答案,可以通过按Cmd/Ctrl+Shift+p,然后选择以下命令,强制Anaconda包使用Python 水蟒&x2B;SublimiteText,报告类型提示为错误,python,sublimetext3,sublime-anaconda,Python,Sublimetext3,Sublime Anaconda,我在SublimiteText3和anaconda中有两个python项目。出于某些特殊原因,其中只有一种情况下,anaconda报告类型暗示(PEP 0484)为“无效语法”错误(对于参数和函数类型)。原因是什么?Anaconda对类型提示的应用(受函数注释和静态类型检查器的影响)仅适用于Python 3。我假设抛出错误的项目正在被Python 2删除。要扩展Anaconda的答案,可以通过按Cmd/Ctrl+Shift+p,然后选择以下命令,强制Anaconda包使用python3解释器:
python3
解释器:
Anaconda:Set Python解释器
然后粘贴到python3解释器的路径中,您可以使用哪个python3
找到该解释器:
如果代码使用virtualenv中的包,请确保将其放入virtualenv路径:
/path/to/.virtualenvs/nameofvenv/bin/python3
如果您不在virtualenv中,请使用系统的python3
:
/usr/bin/python3
或/usr/local/bin/python3
用于mac上自制的python3
将其正确设置为python3可以修复类型批注上的无效语法错误
您还可以直接编辑项目文件以设置解释器路径:
{
"build_systems":
[
{
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"name": "Anaconda Python Builder",
"selector": "source.python",
"shell_cmd": "\"/path/to/.virtualenvs/venvname/bin/python3\" -u \"$file\""
}
],
"settings":
{
"python_interpreter": "/path/to/.virtualenvs/venvname/bin/python3"
}
}
为了进一步说明Python的答案,值得记住的是,类型暗示是在3.5版中引入Python的,因此如果Anaconda在任何以前版本的Python3中使用解释器,那么它会将类型提示报告为无效语法。要解决这个问题,只需将python解释器设置为3.5版本(或更高版本)。正确!我不知道它是怎么发生的,但就是这样。这实际上是不正确的;PEP-484类型提示也可以在Python 2中使用。有关如何使其工作的两种方法,请参见和。实际上,我现在正在使用类型提示将一个相当大的Python 2库移植到Python 3。如果升华文本不知道这是可能的,那么它对PEP-484的支持是不完整的,但这不是PEP-484的问题。@mcepl在升华中OP使用的Anaconda插件的上下文中,这个答案是完全正确的。按照您的建议,可以通过使用注释或存根文件将端口类型提示/检查返回到Py2,但是原始的PEP-3107函数注释描述和PEP-484中描述的扩展是特定于Python 3的。我更新了答案以反映这一点。好的,我会给你一票,但你仍然不是完全正确的。mypy可以测试python2程序(注意——py2开关)。问题完全出在Sublime实现中(只做Python 3注释比较容易,因为在ast模块中解析器是免费的)。@mcepl我很高兴您将说明放在这里,希望它们也能帮助其他用户。我会查看一下Anaconda的来源,看看是否可以提交一份PR或其他东西来解决这个问题。