Python脚本忽略Github工作流中传递给它的参数

Python脚本忽略Github工作流中传递给它的参数,python,github-actions,Python,Github Actions,我正在尝试在Github工作流中运行带有自定义参数的python脚本 当我的脚本在本地机器上运行时,它使用包pythongit info检索当前git提交并将其传递给记录器。但是在工作流中,我可以使用$(git rev parse“$GITHUB\u SHA”)获得提交。我想把它作为参数传递给我的脚本 但是我的脚本总是忽略传递的参数并引用默认值。我错过了什么 Github工作流: Traceback (most recent call last): File "train.py&q

我正在尝试在Github工作流中运行带有自定义参数的python脚本

当我的脚本在本地机器上运行时,它使用包
pythongit info
检索当前git提交并将其传递给记录器。但是在工作流中,我可以使用
$(git rev parse“$GITHUB\u SHA”)
获得提交。我想把它作为参数传递给我的脚本

但是我的脚本总是忽略传递的参数并引用默认值。我错过了什么

Github工作流:

Traceback (most recent call last):
  File "train.py", line 74, in <module>
    default=gitinfo.get_git_info()['commit'],
TypeError: 'NoneType' object is not subscriptable
#此工作流将使用单一版本的Python安装Python依赖项、运行测试和lint
#有关更多信息,请参阅:https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
名称:性能检查器
关于:
拉拽请求:
类型:[已标记]
工作:
建造:
如果:${github.event.label.name=='breaker'}
运行于:ubuntu最新版本
步骤:
-用途:行动/checkout@v2
-名称:设置Python 3.8
用途:操作/设置-python@v2
与:
python版本:3.8
-名称:安装依赖项
运行:|
python-mpip安装——升级pip
如果[-f requirements.txt];然后pip安装-r requirements.txt;fi
-名称:测试所有算法的性能,确保没有任何问题
运行:|
python train.py--git\u commit=$(git rev parse“$GITHUB\u SHA”)--load\u config=configs/*
相关python参数:

parser.add\u参数(
“--git_commit”,
类型=str,
default=gitinfo.get_git_info()['commit'],
help='current git commit')
工作流中的错误:

Traceback (most recent call last):
  File "train.py", line 74, in <module>
    default=gitinfo.get_git_info()['commit'],
TypeError: 'NoneType' object is not subscriptable
回溯(最近一次呼叫最后一次):
文件“train.py”,第74行,在
default=gitinfo.get_git_info()['commit'],
TypeError:“非类型”对象不可下标

此错误提示脚本忽略传递的参数并引用默认值。非常感谢您提供的任何帮助或见解。

从错误中可以看出:

  File "train.py", line 74, in <module>
    default=gitinfo.get_git_info()['commit'],
TypeError: 'NoneType' object is not subscriptable
文件“train.py”,第74行,在
default=gitinfo.get_git_info()['commit'],
TypeError:“非类型”对象不可下标
不管怎样,您正在调用
gitinfo.get\u git\u info()
(因为您将其值传递给
parser.add\u argument()
),它返回
None
,您尝试访问
None['commit']
,这就是为什么您会得到
TypeError:'NoneType'对象不可订阅的原因


尝试使用
default=None
并调用
gitinfo.get\u git\u info()
仅当
git\u commit
参数的值为
None

时,您可以将
git rev parse“$GITHUB\u SHA”
作为单独的步骤添加并检查输出吗?我这样做了,并且得到了提交值。因此,当我执行
echo“COMMIT$(git rev parse“$GITHUB_SHA”)”
时,我得到
COMMIT 9940feaa831a52380cf74a5dc69c12bf47bc56f9
。我甚至尝试传递任何随机字符串,但脚本始终遵循默认值。我没有任何方法来检查输入是否真的是提交。我的代码只接受传递的任何字符串,因此我不知道为什么会发生这种行为。在运行脚本之前,可以添加
set-v
,这样您就可以看到执行的内容了。我只知道发生了什么。我正在发布一个答案。我会马上尝试你的解决方案,但我有点困惑。为什么要调用
gitinfo.get\u git\u info()
?默认值是否仅在未提供参数的情况下运行?它仅在未提供参数的情况下使用,但在调用
解析器时使用。add_argument()
将值传递给
default
。这是在计算
gitinfo.get\u git\u info()['commit']
时进行的。