在MacOS上的VS Code中启动Python脚本时出现`SyntaxError:invalid syntax`

时间:2018-01-25 04:37:28

标签: python json visual-studio-code

已解决:我忘记更新program密钥以始终指向main.py,因此我的配置将当前打开的文件作为Python脚本运行。正确设置program密钥或导航到其他文件是解决方案。当StackOverflow允许我时,我会将我的答案标记为解决方案。

我正在尝试从Visual Studio代码运行Python脚本,但脚本无法运行,并且SyntaxError指向launch.json开头的注释而崩溃。

launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python | Default",
            "type": "python",
            "request": "launch",
            "stopOnEntry": false,
            "pythonPath": "${config:python.pythonPath}",
            "program": "${file}",
            "cwd": "${workspaceFolder}",
            "env": {},
            "envFile": "${workspaceFolder}/.env",
            "debugOptions": [
                "RedirectOutput"
            ]
        }
    ]
}

终端输出:

File ".../.vscode/launch.json", line 2
    // Use IntelliSense to learn about possible attributes.
     ^
SyntaxError: invalid syntax

settings.json

{
    "python.pythonPath": "${workspaceFolder}/venv/bin/python"

}

我之前在我的Windows机器上工作,所有这些都完美无缺。出于某种原因,VSCode尝试通过Python运行launch.json文件,//是Python中无效的注释语法。如果我删除评论,我会收到此错误:

Traceback (most recent call last):
  File ".../.vscode/launch.json", line 8, in <module>
    "stopOnEntry": false,
NameError: name 'false' is not defined

如果我使用Python的False,我不会崩溃,但没有任何反应,我的脚本也不会运行。看起来非常像launch.json错误地被Python解析。对此有何解决方法?

2 个答案:

答案 0 :(得分:9)

我发现了我的问题。我没有更新program密钥以始终指向我的main.py。相反,当前打开的文件作为Python脚本执行 - launch.json更改program键或导航到另一个文件解决了问题。一旦你注意到它就显而易见了!

答案 1 :(得分:1)

解决方案1 ​​

我认为更简单的解决方案是:

  1. 关闭编辑器组上的launch.json
  2. 打开要调试的python文件(例如main.py)
  3. [运行]-[开始调试](F5)

正如Nick提到的那样,当在编辑器中专注于launch.json时,调试系统将在launch.json本身而不是python文件上运行。

解决方案2

如下所示修改launch.json中的“程序”:

"program": "${workspaceFolder}/main.py",

它对应于

程序密钥始终指向main.py

如尼克所说。

请注意,如果将main.py放在较深的目录中,则上述修改可能无法正常工作。