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

时间:2021-03-30 11:23:03

标签: python github-actions

我正在尝试在 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

此错误消息向我表明脚本忽略传递的参数并引用默认值。任何帮助或见解将不胜感激。

1 个答案:

答案 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