36

I am running a Python program that takes some command line arguments. How can I provide these arguments when I am building a program within the Visual Studio Code?

1
  • 1
    You can put the parameters in the properties dialog of your project. Commented Oct 14, 2016 at 7:11

6 Answers 6

30

You can pass in the arguments into the program by defining the arguments in the args setting of launch.json as defined below:

json
{
    "name": "Python",
    "type": "python",
    "pythonPath":"${config.python.pythonPath}", 
    "request": "launch",
    "stopOnEntry": true,
    "console": "none",
    "program": "${file}",
    "cwd": "${workspaceRoot}",
    "args":["arg1", "arg2"],
    "env": {"name":"value"}
}

Further information can be found on the documentation site here: https://github.com/DonJayamanne/pythonVSCode/wiki/Debugging#args

Sign up to request clarification or add additional context in comments.

7 Comments

This works, but in the debug mode. Is it possible to make it run in the non-debug mode?
@cerebrou you ever find an answer for this?
Not the right answer: This only works for debugging (as cerebrou already pointed out)
You can use Run without debugging option, it'll still use the same options and it will not debug your code
@CoryKramer can you give a hint on how to add a console argument for python executable itself (not the program)? I just need to run "python -i <scriptfile>" so I can continue in the integrated console. I am struggling with the docs and forums for just a simple thing like that and I can't find it.
|
3

If you use the Code Runner extension you can add the following to your settings (click on the '{}' icon in the top right corner to get the settings.json file):

"code-runner.executorMap": { "python": "$pythonPath -u $fullFileName xxx" }

where xxx is your argument. This is a global change so you have to change when working on other files.

1 Comment

A better method would be to just keep it simple and run the command manually from the terminal and supply the necessary command line arguments. Or better yet, use a Makefile with custom targets. I find code runner works best for running programs without command-line arguments.
1

According to vscode site here

it is adding similar

"args" : ["--port", "1593"]

in launch.json

1 Comment

As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
0

One way to do it in the version 2.0.0 is:

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",

1 Comment

where do you add this? launch.json is for debugging, isn't
0

running your script from the command line in the terminal works.

1 Comment

but then you can not debug it. or how would you do it?
0

I was also looking for an answer for this. Setting in launch.json works, but you can only use debugging afterwards and if you have more that one configuration, it makes it hard to go back and forth.

So I write a simple function that I can load in main app file. You can give your args with a json file with this method and it works for both debugging and normally running script

import sys
import json    

def loadArgs(path):
    with open(path) as args_file:
        args = json.load(args_file)
    

    for arg in args:
        name = '--' + arg
        value = args[arg]

        if name not in sys.argv:
            sys.argv.append(name)
            sys.argv.append(value)

    print('Args are loaded...')

And import in your main file

from set_args import loadArgs

loadArgs(path='args.json')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.