小能豆

ansible-lint failing with: AttributeError: 'str' object has no attribute 'resolve'

python

在我设置的新 CentOS VM 上运行 github linter 工作流程时,出现以下错误:

Run ansible-lint --parseable ./ansible
Traceback (most recent call last):
  File "/usr/local/bin/ansible-lint", line 8, in <module>
    sys.exit(_run_cli_entrypoint())
  File "/usr/local/lib/python3.9/site-packages/ansiblelint/__main__.py", line 344, in _run_cli_entrypoint
    sys.exit(main(sys.argv))
  File "/usr/local/lib/python3.9/site-packages/ansiblelint/__main__.py", line 197, in main
    initialize_options(argv[1:])
  File "/usr/local/lib/python3.9/site-packages/ansiblelint/__main__.py", line 110, in initialize_options
    options.cache_dir = get_cache_dir(options.project_dir)
  File "/usr/local/lib/python3.9/site-packages/ansible_compat/prerun.py", line 13, in get_cache_dir
    basename = project_dir.resolve().name.encode(encoding="utf-8")
AttributeError: 'str' object has no attribute 'resolve'
Error: Process completed with exit code 1.

我尝试了以下软件包版本,但均因上述错误而失败:

  • python3: 3.9.16
  • ansible: 8.0.0 or 6.6.0
  • ansible-compat: 4.1.2 or 2.2.7
  • ansible-core: 2.15.0 or 2.13.9
  • ansible-lint: 6.17.0 or 6.10.2

使用 pip,还安装了以下依赖项:

  • flake8
  • yamllint==1.28.0
  • codespell
  • comment_parser

是否存在一些 linter 依赖项或我缺少的其他内容?

linter 作业中的步骤是:

 - name: 'Lint yaml - ansible, GH actions and GH workflows'
   run: yamllint -f parsable ./
   if: always()

阅读 177

收藏
2023-06-28

共1个答案

小能豆

根据错误日志,似乎是在运行 ansible-lint 命令时出现了问题,其中涉及到了解析项目目录路径。根据错误消息的跟踪信息,出现问题的代码位于 ansible_compat/prerun.py 文件中。

问题可能出在 Python 版本不兼容性或依赖项问题上。在您的情况下,您可以尝试以下解决方案:

  1. 确认 Python 版本:请确保您在 CentOS VM 上使用的 Python 版本与您在本地环境中使用的版本相同。可以通过在终端中运行 python --version 命令来检查 Python 版本。如果版本不匹配,尝试安装或切换到正确的 Python 版本。

  2. 更新依赖项:尝试更新您的依赖项,特别是 ansible-lint 和相关的依赖项。您可以使用以下命令来更新这些依赖项:

pip install --upgrade ansible-lint ansible-core ansible-compat

这将安装最新版本的这些包。然后重新运行您的 GitHub Linter 工作流程,看看问题是否得到解决。

  1. 检查 ansible-lint 配置:确保您的 ansible-lint 配置正确,并且没有使用过时的配置选项。可以查看 ansible-lint 的文档,以获取有关正确配置的信息。

如果上述解决方案仍然无法解决问题,您可能需要进一步调查和尝试不同的组合或版本。您还可以查看 ansible-lint 和相关依赖项的文档、问题跟踪器或社区支持论坛,以获取关于此错误的更多信息和解决方案。

2023-06-28