简体   繁体   中英

`SyntaxError: invalid syntax` when starting Python script in VS Code on macOS

I'm trying to run a Python script from Visual Studio code, but the script fails to run and crashes with a SyntaxError pointing to the comment at the beginning of 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"
            ]
        }
    ]
}

Terminal Output:

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

settings.json :

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

I was working on my Windows machine earlier and all of this worked perfectly fine. For some reason, VSCode is trying to run the launch.json file through Python and // is an invalid comment syntax in Python. If I remove the comments, I get this error:

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

If I use Python's False , I don't crash but nothing happens and my script does not run. It seems very much like launch.json is being parsed by Python erroneously. Any fix for this?

I found my problem. I did not update the program key to always point to my main.py . Instead, the current open file was being executed as a Python script -- launch.json Changing the program key or navigating to a different file solved the problem. Obvious once you notice it!

Solution 1

I consider that an easier solution is:

  1. Close the launch.json on the editor group
  2. Open the python file such as main.py to be debugged
  3. [Run]-[Start Debugging] (F5)

As Nick mentioned, when focusing on the launch.json in the editor, the debug system runs on the launch.json itself, not a python file.

Solution 2

Modify the "program" in the launch.json as below:

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

It corresponds to

the program key to always point to main.py

as Nick said.

Note that the above modification may not work well if the main.py places in a deep directory.

Closing launch.json if it is open for editing may solve the issue

If launch.json is the latest open file, VSCode may be trying to run launch.json as a Python module (despite the fact that it's clearly not a Python module).

See the NameError in the OP's third screenshot - looks like Python interpreter running against launch.json

Update: need to read it a bit carefully (and look at the code), but the accepted answer is a more permanent solution for most use cases - though I think VS Code's Python plugin should at least warn when trying to run a non- .py file as Python code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM