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)
编辑:突破!固定到以下版本后numpy,pandas测试matplotlib也在 Windows 上完成:
numpy==1.23.2
pandas==1.4.4
matplotlib==3.5.3
Run Code Online (Sandbox Code Playgroud)
我认为这意味着这些软件包之一存在极端情况错误。或者我如何使用它们。我现在会坚持固定这些版本,并会在几个月后通过取消固定来重新访问。