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

Nic*_*der 5 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"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

终端输出:

File ".../.vscode/launch.json", line 2
    // Use IntelliSense to learn about possible attributes.
     ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

settings.json:

{
    "python.pythonPath": "${workspaceFolder}/venv/bin/python"
Run Code Online (Sandbox Code Playgroud)

}

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

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

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

Nic*_*der 12

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


Har*_*aru 7

解决方案1

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

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

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

解决方案2

修改launch.json中的“program”如下:

"program": "${workspaceFolder}/main.py",
Run Code Online (Sandbox Code Playgroud)

它对应于

程序键始终指向main.py

正如尼克所说。

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