使用argparser将参数传递给一个入口点python脚本。

问题描述 投票:0回答:1

我希望将用户输入的参数从命令行传递到一个python脚本的入口点。到目前为止,我已经尝试使用 argparse 将参数从命令行传递到 test.py 脚本中。 当我尝试传递参数时,它们没有被识别,我收到了以下错误。

load_entry_point('thesaurus==0.1', 'console_scripts', 'thesaurus')() TypeError: find_synonym() 缺少1个所需的位置参数: 'argv' 。

我在这里看了其他的例子,但一直无法得到任何解决方案的工作。

def main(argv):
    if argv is None:
        argv = sys.argv

    parser = argparse.ArgumentParser(description='Enter string')
    parser.add_argument('string', type=str, help='Enter word or words', nargs='*')
    args = parser.parse_args(argv[1:])
    print(args)

if __name__ == "__main__":
    sys.exit(main(sys.argv))

我的setup.py脚本切入点看起来像下面这样

setup(entry_points={'console_scripts': ['test=test_folder.main:main']})

我期望发生的情况与我运行python main.py main foo时类似。当它被传递给函数时,会成功地打印出hello。

python arguments argparse setup.py sys
1个回答
0
投票

因此,当我从函数中删除参数时,它现在可以工作了。

 def main():          
        parser = argparse.ArgumentParser(description='Enter string')
        parser.add_argument('string', type=str, help='Enter word or words', nargs='*')
        args = parser.parse_args()
        print(args.string)

if __name__ == "__main__":
    main()

我相信在第一个例子中使用的sys.arv可能会奏效,因为我的实际问题是,当我从GitHub重新下载这个脚本时,使用.

pip install git+ URL

脚本没有更新,所以错误一直存在,这需要删除所有与GitHub仓库相关的文件,然后使用相同的pip命令重新安装。

© www.soinside.com 2019 - 2024. All rights reserved.