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!
I consider that an easier solution is:
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.
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.