在Visual Studio Code中使用参数运行Python程序

30

我正在运行一个Python程序,需要一些命令行参数。在Visual Studio Code中构建程序时,如何提供这些参数?


1
您可以将参数放置在项目的属性对话框中。 - gplayer
6个回答

27

您可以通过在launch.json的args设置中定义参数来将参数传递给程序,如下所定义:

您可以通过在launch.json的args设置中定义参数来将参数传递给程序,如下所定义:

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"}
}

更多信息可以在此文档网站上找到:https://github.com/DonJayamanne/pythonVSCode/wiki/Debugging#args


7
可以在非调试模式下运行吗?尽管这个方法在调试模式下有效。 - cerebrou
@cerebrou,你有找到解决方案吗? - Alex
1
不是正确的答案:这只适用于调试(正如cerebrou已经指出的那样) - fotis j
2
你可以使用“无调试运行”选项,它仍将使用相同的选项,并且不会对你的代码进行调试。 - Don
Vscode 提示 "pythonPath" 不是有效的键,但我刚刚删除了这个键,一切都正常了。谢谢。 - puf
显示剩余2条评论

3

如果您使用Code Runner扩展程序,可以将以下内容添加到您的设置中(单击右上角的“{}”图标以获取settings.json文件):

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

其中xxx是您的参数。这是全局更改,因此在处理其他文件时也必须进行更改。


更好的方法是保持简单,从终端手动运行命令并提供必要的命令行参数。或者更好的方法是使用带有自定义目标的Makefile。我发现Code Runner最适合运行没有命令行参数的程序。 - heisenb0rg

0
在2.0.0版本中的一种方法是:

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

1
你要把它添加到哪里?launch.json 是用于调试的,不是吗? - fotis j

0

在终端中从命令行运行您的脚本是可行的。


2
但是你就无法调试它了。或者你会怎么做呢? - slow

0
根据 vscode 网站 此处 的说法,它正在添加类似的功能。
"args" : ["--port", "1593"]

launch.json


您的回答目前表达不够清晰。请进行[编辑],添加更多细节信息,以便他人了解如何解决问题。您可以在帮助中心中找到编写良好答案的更多信息。 - Community

0
我也在寻找这个问题的答案。在launch.json中设置可以工作,但是只能在调试之后使用,并且如果你有多个配置,来回切换会很困难。
所以我写了一个简单的函数,可以在主应用程序文件中加载。你可以使用这种方法通过json文件传递参数,它适用于调试和正常运行脚本。
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...')

在你的主文件中导入
from set_args import loadArgs

loadArgs(path='args.json')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接