我正在尝试在 Github 工作流中使用自定义参数运行 python 脚本。
当我的脚本在本地机器上运行时,它使用包 python-git-info
来检索当前的 git commit 并将其传递给记录器。但在工作流程中,我可以使用 $(git rev-parse "$GITHUB_SHA")
获取提交。我想将它作为参数传递给我的脚本。
但我的脚本总是忽略传递的参数并引用默认值。我错过了什么?
Github 工作流程:
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Performance Checker
on:
pull_request:
types: [ labeled ]
jobs:
build:
if: ${{ github.event.label.name == 'breaker' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Test performance of all algorithms to ensure nothing broke
run: |
python train.py --git_commit=$(git rev-parse "$GITHUB_SHA") --load_config=configs/*
相关的python arg:
parser.add_argument(
'--git_commit',
type=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
此错误消息向我表明脚本忽略传递的参数并引用默认值。任何帮助或见解将不胜感激。
答案 0 :(得分:1)
正如你在错误中看到的:
File "train.py", line 74, in <module>
default=gitinfo.get_git_info()['commit'],
TypeError: 'NoneType' object is not subscriptable
无论如何您都在调用 gitinfo.get_git_info()
(因为您将其值传递给 parser.add_argument()
),它返回 None
并且您尝试访问 None['commit']
,这就是为什么您得到 { {1}}。
仅当 TypeError: 'NoneType' object is not subscriptable
参数的值为 default=None
时,才尝试使用 gitinfo.get_git_info()
并调用 git_commit
。