我不明白为什么参数传递不正确:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--start_date', type=str, default='2016-07-01T00:00:00Z', dest='start_date')
parser.add_argument('--end_date', type=str, default='2016-09-01T00:00:00Z', dest='end_date')
args, unknown = parser.parse_known_args()
print(str(args.start_date))
# 01/01/2019 00:00:00
print(str(args.end_date))
# 08/20/2019 00:00:00
这是我将参数从 Azure ML 管道脚本传递给脚本的方式:
start_date = '2019-01-01T00:00:00Z'
end_date = '2019-08-20T00:00:00Z'
preprocess_step = PythonScriptStep(
name="Test",
script_name="myscript.py",
compute_target=aml_compute,
source_directory=".",
arguments=[
"--start_date", start_date,
"--end_date", end_date
],
allow_reuse=False,
)
但是,如果我从命令行运行 myscript.py
,则参数会正确传递:
python myscript.py --start_date 2019-01-01T00:00:00Z --end_date 2019-08-20T00:00:00Z
发生了什么以及如何解决它?
最佳答案
仅从您的帖子描述中我不知道您的真实环境是什么,但只是根据类的官方文档PythonScriptStep
和 RunConfiguration
,如下图所示,我认为缺少为 PythonScriptStep
对象的参数 runconfig
分配的 RunConfiguration
对象。
图 1. 红色标记的 PythonScriptStep
类的 arguments
和 runconfig
说明
图2. 设置红色标记的PythonScriptStep
时使用RunConfiguration
的说明
作为引用,您可以引用下面这些官方示例列表。
- MLOps/examples/customer_churn/Customer Churn.ipynb
- MLOps/examples/AzureML-Primers/06 - Automating ML Workflows with Pipelines.ipynb
- MLOps/examples/imagenet-transfer-learning/mlpipeline.py
- MLOpsPython/ml_service/pipelines/diabetes_regression_build_train_pipeline_with_r.py
- MLOpsPython/ml_service/pipelines/diabetes_regression_build_train_pipeline.py
他们首先为PythonScriptStep
分配一个runconfig
值。希望对您有所帮助。
关于python - 使用 argparse 错误地传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59923010/