Azure DevOps发布任务中Python脚本访问预定义变量遇语法错误求助
解决Azure DevOps发布任务中Python脚本访问预定义变量的语法错误
错误原因
你代码里用的$(变量名)是Azure DevOps的变量引用语法,但这不属于Python的合法语法。Python会将$(app-id)解析为表达式,把-识别成减号,导致app-id被当作app - id处理,既不符合字面量规则,又因id未定义触发语法错误,最终报SyntaxError: invalid decimal literal。
解决方法
方法1:直接在脚本任务中注入变量值
在Python代码中将Azure DevOps变量用双引号包裹,Azure DevOps会在执行脚本前自动替换$(变量名)为实际值,生成合法的Python字符串:
import requests import adal import json clientId = "$(app-id)" tenantId = "$(app-id)" clientSecret = "$(secret)" subscription_id = "$(SUBSid)"
方法2:通过脚本参数传递变量(推荐用于敏感变量)
如果是调用外部Python脚本文件,建议通过参数传递变量,避免敏感信息暴露在代码中:
- 在Azure DevOps的Python脚本任务的脚本参数中填写:
--client-id $(app-id) --tenant-id $(app-id) --client-secret $(secret) --subscription-id $(SUBSid)
- 在Python脚本中用
argparse接收参数:
import requests import adal import json import argparse parser = argparse.ArgumentParser() parser.add_argument('--client-id', required=True) parser.add_argument('--tenant-id', required=True) parser.add_argument('--client-secret', required=True) parser.add_argument('--subscription-id', required=True) args = parser.parse_args() clientId = args.client_id tenantId = args.tenant_id clientSecret = args.client_secret subscription_id = args.subscription_id
内容的提问来源于stack exchange,提问作者Delta
相关产品推荐
相关产品推荐

