Sublime Text编辑器为何对有效Python代码报"invalid syntax"错误?
这种情况大概率是Sublime Text使用的Python解释器版本与Anaconda IDE不一致导致的,具体来说有这几个常见场景:
Sublime Text默认绑定了Python 2解释器
你的代码是标准的Python 3写法:print()作为函数调用(带括号),input()读取字符串输入。而Python 2里print是一个语句(不需要括号),虽然单独写print(nos)在Python 2中勉强能跑,但input()在Python 2中会把输入内容当作Python表达式解析,再加上部分低版本Python 2对括号语法的兼容性问题,就容易触发语法错误。而Anaconda IDE默认用的是Python 3环境,所以能正常运行。Sublime Text的Python构建系统配置错误
有时候Sublime Text默认的构建系统指向了系统自带的旧版本Python,而非Anaconda环境里的Python 3。你可以这么检查和修复:- 打开Sublime Text,点击顶部菜单栏的
Tools > Build System - 确认是否选中了正确的Python 3选项,比如
Python 3或者你Anaconda环境对应的Python路径 - 如果没有合适选项,手动添加构建系统:
Tools > Build System > New Build System,粘贴以下内容(替换成你自己的Anaconda Python路径):
保存为{ "cmd": ["C:/Users/你的用户名/anaconda3/python.exe", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }Anaconda Python.sublime-build,选中这个构建系统再运行代码即可。
- 打开Sublime Text,点击顶部菜单栏的
代码中混入了不可见特殊字符
复制粘贴代码时偶尔会带入全角空格、非ASCII换行符这类不可见字符,Anaconda IDE可能会自动处理这些字符,但Sublime的Python解释器会把它们识别为语法错误。你可以在Sublime里开启显示不可见字符:View > Show Invisibles,检查代码里有没有异常字符,或者把代码复制到纯文本编辑器(比如Notepad++)里重新粘贴一遍。
另外还有小概率情况是Sublime的Python语法检查插件冲突,但这种情况相对少见,优先排查上面的几个原因即可。
内容的提问来源于stack exchange,提问作者noob

