Не удалось импортировать необходимую библиотеку Python (suds) на Python хоста /usr/bin/python3

При выполнении плейбука ниже:

  - name: GetProcessList with sysnr
    community.sap_libs.sap_control_exec:
      hostname: all
      sysnr: "00"
      function: GetProcessList

Я получаю следующую ошибку:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'suds'
fatal: [hostname]: FAILED! => changed=false
  msg: Failed to import the required Python library (suds) on hostname's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter

После выполнения с опцией -vvvv я получаю следующую информацию:

The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_community.sap_libs.sap_control_exec_payload_da6n801n/ansible_community.sap_libs.sap_control_exec_payload.zip/ansible_collections/community/sap_libs/plugins/modules/sap_control_exec.py", line 264, in <module>
ModuleNotFoundError: No module named 'suds'
fatal: [hostname]: FAILED! => changed=false
  invocation:
    module_args:
      force: false
      function: GetProcessList
      hostname: hostname
      parameter: null
      password: null
      port: null
      sysnr: '"00"'
      username: null
  msg: Failed to import the required Python library (suds) on hostname's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter

Я попытался установить suds с помощью pip install suds-py3, но, похоже, это не решило проблему. Итак, я немного озадачен. Нужно ли устанавливать дополнительные модули?

Любая помощь будет оценена. Возможно, я упускаю что-то очевидное.

Спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема, скорее всего, вызвана тем, что библиотека установлена ​​на хосте ansible-контроллера (где вы выполняете ansible), а не на хосте, который вы настраиваете (указан в инвентаре и hosts: игры).

Рекомендую включить что-то вроде этого

- name: Fallback in case of errors in pip version detection
  block:
  - name: Get pip version
    command: '{{ ansible_python_interpreter | default("python3") }} -m pip --version'
    register: pip_version
    # stdout: pip 24.0 from /home/myuser/.local/lib/python3.11/site-packages/pip (python 3.11)

  - name: Extract pip version from the stdout
    set_fact:
      pip_version: '{{ pip_version.stdout | regex_search("pip ([0-9.]+)") | split(" ") | last }}'
  rescue:
  - name: Assume a recent pip version
    set_fact:
      pip_version: 21.3

- name: Suds library is installed
  pip:
    name: suds-py3
    extra_args: '{{ "--break-system-packages" if pip_version is version("21.3", "> = ") else "" }}'

перед вашей задачей, чтобы убедиться, что необходимая библиотека всегда установлена.

Более того, таким образом он обязательно будет установлен для используемого в данный момент Python Ansible (см. ansible_python_interpreter)

Другие вопросы по теме