在使用paddleocr的模型打包的时候,一直无法正常运行,然后加入logging后发现在
parser.parse_args()处停止运行了。坑了我好几天,天天打包。。。。
解决方案:
将parser.parse_args() 替换为 parser.parse_known_args()[0] 后代码正常运行。
parser.parse_args()用法介绍:argparse传参模块调用
测试时发现,下面三种写法输出结果是一致的:
import argparse
parser = argparse.ArgumentParser()
yaml_path='requirements.txt'
parser.add_argument('-f', '--config_file', dest='config_file',type=argparse.FileType(mode='r'),default=yaml_path)
args = parser.parse_args()
print('args:', args)
args = parser.parse_args(args=[])
print('args:', args)
args = parser.parse_known_args()[0]
print('args:', args)
parse_known_args
和 parse_args的区别如下:
-
parse_known_args
和parse_args
是 argparse 模块提供的两个方法,它们的主要区别在于当解析器遇到未知的命令行选项或参数时的行为。 -
parse_known_args()
方法不会抛出错误,它会返回两个值,第一个值是已知选项和参数的值的命名空间(namespace)对象,第二个值是包含未知选项和参数的列表。 此方法可以在使用多个解析器的情况下特别有用,其中一个解析器可以解析一些选项和参数,另一个解析器可以解析剩余的选项和参数。 -
相反,如果使用
parse_args()
方法,则解析器会抛出SystemExit
异常,并显示错误消息。这可能是在脚本中使用的一种标准方法,因为错误消息会显示在控制台上,指示用户如何正确使用脚本。文章来源:https://www.toymoban.com/news/detail-457974.html -
因此,通常情况下,当你知道需要解析的选项和参数时,使用
parse_args()
方法可能更为合适;而当你不能确定选项和参数的列表时,或者需要在多个解析器之间共享选项和参数,则应该使用parse_known_args()
方法。文章来源地址https://www.toymoban.com/news/detail-457974.html
到了这里,关于parser.parse_args()在docker运行中止运行的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!