在 github 上测试超时但在本地完成

ElR*_*udi 7 python numpy pytest pandas github-actions

我的 python 项目中有pytest单元测试,每次推送到 github 时都会运行该测试。最近,(windows, python 3.9) 和 (windows, python 3.10) 上的测试即使在 6 小时后也没有完成,我试图找出原因。

对于上下文:

  • 这不仅仅是 python 版本,因为 python 3.9 和 3.10 在 mac 和 linux 上完成。另外,它不仅仅是 Windows 版本,因为 Windows 已经完成了 python 3.8。他们都最多在 1 小时内完成。

    在此输入图像描述

  • 在本地,使用 python 3.9 的 Windows 在 <1 小时内完成。在全新的 conda 虚拟环境中也是如此。

    在此输入图像描述

  • 即使推送以前不会造成问题的代码版本,现在也会遇到超时。所以我认为这不是我的代码中的东西,而是依赖项或 github 操作的设置方式(?)。我对此了解不够,无法做出明智的评估。

非常感谢任何调试方面的帮助。

是该项目,是测试结果的示例。


编辑:我查看了 3 个 Windows 案例中的每一个的安装日志并进行了比较。以下是差异:

{'missing': {'typing-extensions': {'38': '4.4.0', '39': '4.4.0'}},
 'different': {'setuptools': {'38': '56.0.0', '39': '58.1.0', '310': '63.2.0'}}}
Run Code Online (Sandbox Code Playgroud)

如果这是罪魁祸首,我会感到惊讶setuptools- 它不是只在安装软件包时使用吗?此外,Mac 上的 3.9 和 ubuntu 上的 3.9 使用58.1.0与 Windows 上的 3.9 相同的版本。

以下是所有版本,如果有帮助的话:

            {'colorama': {38: '0.4.5', 39: '0.4.5', 310: '0.4.5'},
             'setuptools': {38: '56.0.0', 39: '58.1.0', 310: '63.2.0'},
             'openpyxl': {38: '3.0.10', 39: '3.0.10', 310: '3.0.10'},
             'tomli': {38: '2.0.1', 39: '2.0.1', 310: '2.0.1'},
             'packaging': {38: '21.3', 39: '21.3', 310: '21.3'},
             'et-xmlfile': {38: '1.1.0', 39: '1.1.0', 310: '1.1.0'},
             'pyparsing': {38: '3.0.9', 39: '3.0.9', 310: '3.0.9'},
             'contourpy': {38: '1.0.5', 39: '1.0.5', 310: '1.0.5'},
             'cycler': {38: '0.11.0', 39: '0.11.0', 310: '0.11.0'},
             'fonttools': {38: '4.37.4', 39: '4.37.4', 310: '4.37.4'},
             'kiwisolver': {38: '1.4.4', 39: '1.4.4', 310: '1.4.4'},
             'matplotlib': {38: '3.6.1', 39: '3.6.1', 310: '3.6.1'},
             'numpy': {38: '1.23.4', 39: '1.23.4', 310: '1.23.4'},
             'pandas': {38: '1.5.1', 39: '1.5.1', 310: '1.5.1'},
             'pillow': {38: '9.2.0', 39: '9.2.0', 310: '9.2.0'},
             'pint': {38: '0.19.2', 39: '0.19.2', 310: '0.19.2'},
             'pint-pandas': {38: '0.2', 39: '0.2', 310: '0.2'},
             'portfolyo': {38: '0+untagged.1.g7a9e60b',
              39: '0+untagged.1.g7a9e60b',
              310: '0+untagged.1.g7a9e60b'},
             'python-dateutil': {38: '2.8.2', 39: '2.8.2', 310: '2.8.2'},
             'pytz': {38: '2022.5', 39: '2022.5', 310: '2022.5'},
             'six': {38: '1.16.0', 39: '1.16.0', 310: '1.16.0'},
             'black': {38: '22.10.0', 39: '22.10.0', 310: '22.10.0'},
             'cfgv': {38: '3.3.1', 39: '3.3.1', 310: '3.3.1'},
             'click': {38: '8.1.3', 39: '8.1.3', 310: '8.1.3'},
             'distlib': {38: '0.3.6', 39: '0.3.6', 310: '0.3.6'},
             'filelock': {38: '3.8.0', 39: '3.8.0', 310: '3.8.0'},
             'flake8': {38: '5.0.4', 39: '5.0.4', 310: '5.0.4'},
             'identify': {38: '2.5.6', 39: '2.5.6', 310: '2.5.6'},
             'mccabe': {38: '0.7.0', 39: '0.7.0', 310: '0.7.0'},
             'mypy-extensions': {38: '0.4.3', 39: '0.4.3', 310: '0.4.3'},
             'nodeenv': {38: '1.7.0', 39: '1.7.0', 310: '1.7.0'},
             'pathspec': {38: '0.10.1', 39: '0.10.1', 310: '0.10.1'},
             'platformdirs': {38: '2.5.2', 39: '2.5.2', 310: '2.5.2'},
             'pre-commit': {38: '2.20.0', 39: '2.20.0', 310: '2.20.0'},
             'pycodestyle': {38: '2.9.1', 39: '2.9.1', 310: '2.9.1'},
             'pyflakes': {38: '2.5.0', 39: '2.5.0', 310: '2.5.0'},
             'pyyaml': {38: '6.0', 39: '6.0', 310: '6.0'},
             'toml': {38: '0.10.2', 39: '0.10.2', 310: '0.10.2'},
             'typing-extensions': {38: '4.4.0', 39: '4.4.0'},
             'virtualenv': {38: '20.16.5', 39: '20.16.5', 310: '20.16.5'},
             'attrs': {38: '22.1.0', 39: '22.1.0', 310: '22.1.0'},
             'certifi': {38: '2022.9.24', 39: '2022.9.24', 310: '2022.9.24'},
             'charset-normalizer': {38: '2.1.1', 39: '2.1.1', 310: '2.1.1'},
             'codecov': {38: '2.1.12', 39: '2.1.12', 310: '2.1.12'},
             'coverage': {38: '6.5.0', 39: '6.5.0', 310: '6.5.0'},
             'idna': {38: '3.4', 39: '3.4', 310: '3.4'},
             'iniconfig': {38: '1.1.1', 39: '1.1.1', 310: '1.1.1'},
             'pluggy': {38: '1.0.0', 39: '1.0.0', 310: '1.0.0'},
             'py': {38: '1.11.0', 39: '1.11.0', 310: '1.11.0'},
             'pytest': {38: '7.1.3', 39: '7.1.3', 310: '7.1.3'},
             'pytest-cov': {38: '4.0.0', 39: '4.0.0', 310: '4.0.0'},
             'requests': {38: '2.28.1', 39: '2.28.1', 310: '2.28.1'},
             'urllib3': {38: '1.26.1', 39: '1.26.1', 310: '1.26.1'}}
Run Code Online (Sandbox Code Playgroud)

编辑:我现在还将最终通过的提交与第一次超时提交(相同的代码库和 Windows 上的 python 3.9)进行了比较。有以下区别:

{'missing': {'contourpy': {'39firstnok': '1.0.5'}},
 'different': {'fonttools': {'39finalok': '4.37.1', '39firstnok': '4.37.4'},
  'matplotlib': {'39finalok': '3.5.3', '39firstnok': '3.6.0'},
  'numpy': {'39finalok': '1.23.2', '39firstnok': '1.23.3'},
  'pandas': {'39finalok': '1.4.4', '39firstnok': '1.5.0'},
  'pytz': {'39finalok': '2022.2.1', '39firstnok': '2022.4'},
  'identify': {'39finalok': '2.5.5', '39firstnok': '2.5.6'},
  'virtualenv': {'39finalok': '20.16.4', '39firstnok': '20.16.5'},
  'certifi': {'39finalok': '2022.6.15', '39firstnok': '2022.9.24'},
  'coverage': {'39finalok': '6.4.4', '39firstnok': '6.5.0'},
  'idna': {'39finalok': '3.3', '39firstnok': '3.4'},
  'pytest-cov': {'39finalok': '3.0.0', '39firstnok': '4.0.0'},
  'urllib3': {'39finalok': '1.26.1', '39firstnok': '1.26.12'}}}
Run Code Online (Sandbox Code Playgroud)

我想知道这些版本是否是罪魁祸首。我想我必须首先固定每个版本的版本,然后看看如果我将它们一一取消固定会发生什么。

以下是所有软件包及其版本的列表:

            {'colorama': {'39finalok': '0.4.5', '39firstnok': '0.4.5'},
             'packaging': {'39finalok': '21.3', '39firstnok': '21.3'},
             'pyparsing': {'39finalok': '3.0.9', '39firstnok': '3.0.9'},
             'click': {'39finalok': '8.1.3', '39firstnok': '8.1.3'},
             'setuptools': {'39finalok': '58.1.0', '39firstnok': '58.1.0'},
             'tomli': {'39finalok': '2.0.1', '39firstnok': '2.0.1'},
             'cycler': {'39finalok': '0.11.0', '39firstnok': '0.11.0'},
             'fonttools': {'39finalok': '4.37.1', '39firstnok': '4.37.4'},
             'kiwisolver': {'39finalok': '1.4.4', '39firstnok': '1.4.4'},
             'matplotlib': {'39finalok': '3.5.3', '39firstnok': '3.6.0'},
             'numpy': {'39finalok': '1.23.2', '39firstnok': '1.23.3'},
             'pandas': {'39finalok': '1.4.4', '39firstnok': '1.5.0'},
             'pillow': {'39finalok': '9.2.0', '39firstnok': '9.2.0'},
             'pint': {'39finalok': '0.19.2', '39firstnok': '0.19.2'},
             'pint-pandas': {'39finalok': '0.2', '39firstnok': '0.2'},
             'portfolyo': {'39finalok': '0+untagged.1.g739f383',
              '39firstnok': '0+untagged.1.g739f383'},
             'python-dateutil': {'39finalok': '2.8.2', '39firstnok': '2.8.2'},
             'pytz': {'39finalok': '2022.2.1', '39firstnok': '2022.4'},
             'six': {'39finalok': '1.16.0', '39firstnok': '1.16.0'},
             'black': {'39finalok': '22.8.0', '39firstnok': '22.8.0'},
             'cfgv': {'39finalok': '3.3.1', '39firstnok': '3.3.1'},
             'distlib': {'39finalok': '0.3.6', '39firstnok': '0.3.6'},
             'et-xmlfile': {'39finalok': '1.1.0', '39firstnok': '1.1.0'},
             'filelock': {'39finalok': '3.8.0', '39firstnok': '3.8.0'},
             'flake8': {'39finalok': '5.0.4', '39firstnok': '5.0.4'},
             'identify': {'39finalok': '2.5.5', '39firstnok': '2.5.6'},
             'mccabe': {'39finalok': '0.7.0', '39firstnok': '0.7.0'},
             'mypy-extensions': {'39finalok': '0.4.3', '39firstnok': '0.4.3'},
             'nodeenv': {'39finalok': '1.7.0', '39firstnok': '1.7.0'},
             'openpyxl': {'39finalok': '3.0.10', '39firstnok': '3.0.10'},
             'pathspec': {'39finalok': '0.10.1', '39firstnok': '0.10.1'},
             'platformdirs': {'39finalok': '2.5.2', '39firstnok': '2.5.2'},
             'pre-commit': {'39finalok': '2.20.0', '39firstnok': '2.20.0'},
             'pycodestyle': {'39finalok': '2.9.1', '39firstnok': '2.9.1'},
             'pyflakes': {'39finalok': '2.5.0', '39firstnok': '2.5.0'},
             'pyyaml': {'39finalok': '6.0', '39firstnok': '6.0'},
             'toml': {'39finalok': '0.10.2', '39firstnok': '0.10.2'},
             'typing-extensions': {'39finalok': '4.3.0',
              '39firstnok': '4.3.0'},
             'virtualenv': {'39finalok': '20.16.4', '39firstnok': '20.16.5'},
             'attrs': {'39finalok': '22.1.0', '39firstnok': '22.1.0'},
             'certifi': {'39finalok': '2022.6.15', '39firstnok': '2022.9.24'},
             'charset-normalizer': {'39finalok': '2.1.1',
              '39firstnok': '2.1.1'},
             'codecov': {'39finalok': '2.1.12', '39firstnok': '2.1.12'},
             'coverage': {'39finalok': '6.4.4', '39firstnok': '6.5.0'},
             'idna': {'39finalok': '3.3', '39firstnok': '3.4'},
             'iniconfig': {'39finalok': '1.1.1', '39firstnok': '1.1.1'},
             'pluggy': {'39finalok': '1.0.0', '39firstnok': '1.0.0'},
             'py': {'39finalok': '1.11.0', '39firstnok': '1.11.0'},
             'pytest': {'39finalok': '7.1.3', '39firstnok': '7.1.3'},
             'pytest-cov': {'39finalok': '3.0.0', '39firstnok': '4.0.0'},
             'requests': {'39finalok': '2.28.1', '39firstnok': '2.28.1'},
             'urllib3': {'39finalok': '1.26.1', '39firstnok': '1.26.12'},
             'contourpy': {'39firstnok': '1.0.5'}}
Run Code Online (Sandbox Code Playgroud)

编辑:突破!固定到以下版本后numpypandas测试matplotlib也在 Windows 上完成:

numpy==1.23.2
pandas==1.4.4
matplotlib==3.5.3
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我认为这意味着这些软件包之一存在极端情况错误。或者我如何使用它们。我现在会坚持固定这些版本,并会在几个月后通过取消固定来重新访问。