Чем вызвана эта проблема
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