使用 argparser 将参数传递给入口点 python 脚本
Passing arguments to an entry point python script using argparser
我希望将用户输入的参数从命令行传递到 python 脚本的入口点。到目前为止,我已经尝试使用 argparse 将参数从命令行传递到 test.py 脚本。当我尝试传递无法识别的参数时,我收到以下错误。
load_entry_point('thesaurus==0.1', 'console_scripts', 'thesaurus')()
TypeError: find_synonym() missing 1 required positional argument: '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。
所以当我从函数中删除参数时它现在可以工作了。
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 命令重新安装它。
为了两全其美,main()
应该接受 argv(这样更容易测试,就像您 一样)。但是,您需要一个默认值才能将其用作入口点,以便可以在不带参数的情况下调用它。看起来像这样:
def main(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)
现在它是可测试的,您仍然可以将它用作入口点。
我希望将用户输入的参数从命令行传递到 python 脚本的入口点。到目前为止,我已经尝试使用 argparse 将参数从命令行传递到 test.py 脚本。当我尝试传递无法识别的参数时,我收到以下错误。
load_entry_point('thesaurus==0.1', 'console_scripts', 'thesaurus')()
TypeError: find_synonym() missing 1 required positional argument: '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。
所以当我从函数中删除参数时它现在可以工作了。
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 命令重新安装它。
为了两全其美,main()
应该接受 argv(这样更容易测试,就像您
def main(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)
现在它是可测试的,您仍然可以将它用作入口点。