Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

`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?

like image 800
Nick Alexander Avatar asked Jan 25 '18 04:01

Nick Alexander


Video Answer


3 Answers

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!

like image 71
Nick Alexander Avatar answered Oct 07 '22 11:10

Nick Alexander


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.

like image 32
Haru Avatar answered Oct 07 '22 11:10

Haru


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

(Note: the contribution of this answer is solely to put the crux of Haru's Solution 1.1 and Nick's own self-diagnosis into simple language in the answer's first line)

like image 38
scharfmn Avatar answered Oct 07 '22 12:10

scharfmn