我希望将用户输入的参数从命令行传递到一个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。
因此,当我从函数中删除参数时,它现在可以工作了。
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命令重新安装。