【问题标题】:Why Github Actions run successfully but Python script didn't execute as expected为什么 Github Actions 运行成功但 Python 脚本没有按预期执行
【发布时间】:2022-10-02 00:01:02
【问题描述】:

我正在尝试使用 Github Action 来测试日常运行的 python 脚本。下面有一个非常简单的文件目录:

DailyScrapingData.py:(下面的代码可以在本地机器上成功运行)

from yahoo_fin import stock_info as si
from datetime import datetime
content = datetime.now().strftime(\"%Y%m%d\") + \", \" + str(si.get_live_price(\"^DJI\")) + \", \" + str(si.get_live_price(\"^DWCF\"))
print(content, file = open(\'DailyScrapingData.csv\', \'a+\'))

.github/workflows/scheduler.yml:

name: DailyScrapingData

on:
  schedule:
- cron: \'0 1 * * 1-5\' 

jobs:
  pull_data:
runs-on: ubuntu-latest
steps:

  - name: checkout repo content
    uses: actions/checkout@v2 # checkout the repository content to github runner

  - name: setup python
    uses: actions/setup-python@v2
    with:
      python-version: \'3.8\' # install the python version needed
      
  - name: install python packages
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
      
  - name: execute py script 
    run: python3 DailyScrapingData.py


在运行 Github 操作的所有步骤后检查 DailyScrapingData.csv 时什么也没有。假设在运行 python 脚本后应该将一些数据写入 csv。但什么也没有发生。

有什么想法吗?

  • 它说文件不是这些。尝试在 shell 任务中列出目录内容以查看其中的内容。
  • 你好 jessehouwing,我是 Github 的新手。我不知道如何通过 shell 列出目录,但我尝试重新上传有问题的图像(见上文)。我认为文件的存储方式更清楚。有什么想法吗?
  • 会不会是Scheduler.yml的最后一行? : 运行: python HomeShareMa/DailyScrapingData/DailyScrapingData.py
  • run 步骤中尝试此命令:stackoverflow.com/a/40825320/736079.svn 替换为.git
  • 我再次尝试并如上所述重新调整了 .yml 文件。每个步骤都成功运行,但没有触发 python 脚本将数据写入 csv 文件。有什么想法吗?

标签: python-3.x github github-actions


【解决方案1】:

您正在使用包含多行的单行运行步骤。

更改此步骤:

  - name: install python packages
    run: 
      python -m pip install --upgrade pip
      pip install -r requirements.txt

至:

  - name: install python packages
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt

【讨论】:

  • 你好约翰汉利,我错过了重要的一点。但是它仍然无法触发 python 脚本按预期运行。
  • @HomeShare - 编辑您的问题并修复第一个问题。这样你就不会同时调试多个问题。
  • 其实这是同一个问题。该设置在 Github 操作中无法正常工作。我尝试根据大家的建议来修复错误。如果问题得到解决,将标记为答案。谢谢
【解决方案2】:

工作流文件缺少提交和推送更改的步骤;这就是编辑后的 ​​csv 文件未保存到您的存储库的原因。

简要说明您到目前为止所做的工作:

  • runs-on: ubuntu-latest :你的 GitHub 运行器,一个临时 VM;除非有明确的命令将其导出,否则在这里发生的所有事情都将保留在这里。与您的本地计算机不同,它是隔离的
  • actions/checkout@v2 : git checkout 将存储库的文件(默认为主分支)加载到 GitHub 运行器中
  • 定义了安装 python、一些库和运行 py 脚本的步骤

通俗地说,这类似于在 Microsoft Excel 中打开 csv 文件,写入 Yahoo Finance 数据,然后不保存就关闭 Excel。

您需要将此步骤添加到您的工作流程中:

- name: Commit and push
  run: |
    git config user.name "${GITHUB_ACTOR}"
    git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
    git add DailyScrapingData.csv  # or git add -A to add all files
    git commit -m "Updated DailyScrapingData.csv"  # change this message if you want
    git push "https://${GITHUB_ACTOR}:${TOKEN}@github.com/${GITHUB_REPOSITORY}.git" HEAD:main || exit 0

请注意,如果没有要提交的内容(即未检测到文件更改),这将引发错误并导致作业失败。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 2015-09-26
    相关资源
    最近更新 更多