GitHub Actions:pylint 失败并显示 F0001:没有名为 __init__.py 的模块(致命)

mel*_*vio 5 grep github pylint python-3.x github-actions

以下 GitHub Pylint 入门工作流程失败并出现大量pylintF0001 错误。

这是 github-workflow源代码:

name: Pylint

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.9
      uses: actions/setup-python@v2
      with:
        python-version: 3.9
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install pylint
    - name: Analysing the code with pylint
      run: |
        pylint `ls -R|grep .py$|xargs`
Run Code Online (Sandbox Code Playgroud)

这些是工作流程输出的错误:

Run pylint $(ls -R | grep '.py$' | xargs)
************* Module __init__.py
__init__.py:1:0: F0001: No module named __init__.py (fatal)
__init__.py:1:0: F0001: No module named __init__.py (fatal)
************* Module pet.py
pet.py:1:0: F0001: No module named pet.py (fatal)
************* Module Authorization.py
Authorization.py:1:0: F0001: No module named Authorization.py (fatal)
************* Module Http.py
Http.py:1:0: F0001: No module named Http.py (fatal)
__init__.py:1:0: F0001: No module named __init__.py (fatal)
...
Error: Process completed with exit code 17.
Run Code Online (Sandbox Code Playgroud)

为什么找不到pylint这些模块?

mel*_*vio 6

失败原因

GitHub 操作工作流程包含一个错误:

 | run  
    pylint `ls -R|grep .py$|xargs`
Run Code Online (Sandbox Code Playgroud)

解决方案

解决办法是更换:

    pylint `ls -R|grep .py$|xargs`
Run Code Online (Sandbox Code Playgroud)

经过:

    pylint $(find . -name "*.py" | xargs)
Run Code Online (Sandbox Code Playgroud)

错误的解释

ls -R返回当前目录中的文件,格式如下:

./dir1:
__init__.py file1.py

./dir1/dir2
__init__.py file2.py
Run Code Online (Sandbox Code Playgroud)

ls -R如果您过滤with的输出grep .py$,您将丢失文件的路径*.pypylint找不到这些文件。

结果,pylint失败并出现 F0001 错误:

./dir1:
__init__.py file1.py

./dir1/dir2
__init__.py file2.py
Run Code Online (Sandbox Code Playgroud)