我希望将用户输入的参数从命令行传递到python脚本的入口点。到目前为止,我已经尝试使用far解析将参数从命令行传递给test.py脚本。当我试图传递这些参数时,它们是不被识别的,并且我收到了以下错误。
load_entry_point(“同义词库=0.1”、“控制台_脚本”、“同义词库”)()
TypeError: find_synonym()缺少一个必需的位置参数:'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']})我期望发生的事情类似于运行时的情况。在传递给函数时,它将成功地打印出hello。
发布于 2020-05-07 13:47:08
所以,当我从函数中移除参数时,它就起作用了。
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安装git+ URL
脚本没有更新,因此错误持续存在,这需要删除与GitHub存储库相关的所有文件,并使用相同的pip命令重新安装它。
发布于 2022-05-26 19:03:19
为了充分利用这两个世界,main()应该接受argv (这使得测试更容易,就像您的observed一样)。但是,您需要一个缺省值来使用它作为入口点,这样就可以在不使用args的情况下调用它。看起来是这样的:
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)现在它是可测试的,您仍然可以使用它作为入口点。
https://stackoverflow.com/questions/61565153
复制相似问题