You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用argparse时传入的参数为何被判定为未识别或忽略?

问题:创建生成requirements文件的简易Pipreqs脚本

已在另一个文件中处理了pipreqs的安装及包存在性检查,这并非问题所在,也已阅读过argparse官方文档。

但运行以下脚本时,总会提示「未识别参数或忽略显式参数」:

import argparse
import subprocess

parser = argparse.ArgumentParser()

parser.add_argument("-q", "--set_req", action="store_false", required=False)
parser.add_argument("-d", "--directory", action="store_const", const=".", required=False)

def use_pipreqs_to_generate_requirements(dir_name):
    subprocess.check_call(['pipreqs', f'{dir_name}'])


if __name__ == "__main__":
    args = parser.parse_args()
    print(args)
    print(f"Req: {args.set_req}")

    print(f" Dir {args.directory}")
    # use_pipreqs_to_generate_requirements(args.directory)

使用命令 python3 setup_requirements_argparse.py --set_req True -d "." 运行脚本,尝试将-q或--set-req后的值改为true、True、False、false,均无效。

用等号连接参数与值时,会出现「忽略显式参数」错误:

python3 setup_requirements_argparse.py --set_req=True -d="test/"
usage: setup_requirements_argparse.py [-h] [-q] [-d]
setup_requirements_argparse.py: error: argument -q/--set_req: ignored explicit argument 'True'

也曾将args =移至main函数外,问题依旧。


解决方案

store_true和store_false是store_const的特殊情况,分别用于存储True和False值,默认值分别为False和True。需要明确的是:设置action为store_true或store_false的参数不接受输入值——只要包含该标志,就会将对应布尔值存入参数;若不包含该标志,则使用默认值(或与action相反的值)。

修改代码如下,即可实现“只需加入-q标志,就触发requirements.txt生成”的预期效果:

parser.add_argument("-q", "--set_req", action="store_true", required=False)
parser.add_argument("-d", "--directory", action="store", default=".", required=False)
...
if args.set_req:
    use_pipreqs_to_generate_requirements(args.directory)

内容的提问来源于stack exchange,提问作者Annie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:05:11