Нет имени 'xxx' в модуле 'ansible .module_utils', pylint (без имени в модуле) в VScode - PullRequest
0 голосов
/ 16 апреля 2020

Чем вызвана эта проблема

Ansible поддерживает пользовательскую папку module_utils, мы можем добавить следующую строку в ansible.cfg:

module_utils   = /xxx/lib/module_utils

Затем, когда Playbook работает, ansible объединит вместе /usr/local/lib/python3.6/dist-packages/ansible/module_utils и /xxx/lib/module_utils.

Итак, мы можем импортировать утилиты модуля в определяемый пользователем модуль ansible, например:

import ansible.module_utils.my_utils

Но pylint не читает файл ansibe.cfg и не объединяет папку пользовательских утилит с системной. Таким образом, он не может найти my_utils в /usr/local/lib/python3.6/dist-packages/ansible/module_utils и вызывает эту проблему.

Мой вопрос

Есть ли какой-нибудь способ заставить pylint «увидеть» модули в пользовательской папке?

Кстати, добавить дополнительный путь поиска в конфигурации pylint, как показано ниже, не будет исправить эту проблему.

init-hook='import sys; sys.path.append("/xxx/lib/module_utils")'

, поскольку в модуле ansible мы использовали ansible.module_utils пространство имен

import ansible.module_utils.my_utils

, а не

import my_utils
...