Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible和Amazon Linux 2:如何将yum模块与Python3结合使用?_Python_Amazon Web Services_Ansible_Amazon Linux 2 - Fatal编程技术网

Ansible和Amazon Linux 2:如何将yum模块与Python3结合使用?

Ansible和Amazon Linux 2:如何将yum模块与Python3结合使用?,python,amazon-web-services,ansible,amazon-linux-2,Python,Amazon Web Services,Ansible,Amazon Linux 2,我使用Ansible 2.9使用Amazon Linux 2创建EC2实例。出于某些目的,我需要在EC2上安装Python3 所以我使用选项ansible\u python\u解释器:“/usr/bin/python3” 但是使用此选项moduleyumreturn errorpkg_mgr:yum-msg:rpm的Python 2绑定是此模块所必需的。如果您需要Python 3支持,请使用'dnf'Ansible模块。 但是Amazon Lunux 2不适用于dnf 同样的问题在这里和其他论坛

我使用Ansible 2.9使用Amazon Linux 2创建EC2实例。出于某些目的,我需要在EC2上安装Python3

所以我使用选项
ansible\u python\u解释器:“/usr/bin/python3”

但是使用此选项moduleyumreturn error
pkg_mgr:yum-msg:rpm的Python 2绑定是此模块所必需的。如果您需要Python 3支持,请使用'dnf'Ansible模块。

但是Amazon Lunux 2不适用于dnf

同样的问题在这里和其他论坛中也有描述。建议的解决方案是Python2


有没有办法使用Python3和yum?或者唯一的方法是使用shell模块来代替?

根据从, 您可以将yum和non-yum任务分开,并仅将python3用于non-yum任务:

- hosts: testsv
  gather_facts: no
  become: yes
 
  tasks:
    # here yum running under python2 without errors
    - name: task1 
      yum:
        list: curl  

    # here yum running under python3
    - name: task2 
      yum:
        list: curl
      vars:
        ansible_python_interpreter: /usr/bin/python3
或者尝试反转条件:

- hosts: testsv
  gather_facts: no
  become: yes
 
  tasks:
    # Run yum under python2, and all other tasks under python3
    - name: task2 
      yum:
        list: curl
      vars:
        ansible_python_interpreter: /usr/bin/python2

根据从,, 您可以将yum和non-yum任务分开,并仅将python3用于non-yum任务:

- hosts: testsv
  gather_facts: no
  become: yes
 
  tasks:
    # here yum running under python2 without errors
    - name: task1 
      yum:
        list: curl  

    # here yum running under python3
    - name: task2 
      yum:
        list: curl
      vars:
        ansible_python_interpreter: /usr/bin/python3
或者尝试反转条件:

- hosts: testsv
  gather_facts: no
  become: yes
 
  tasks:
    # Run yum under python2, and all other tasks under python3
    - name: task2 
      yum:
        list: curl
      vars:
        ansible_python_interpreter: /usr/bin/python2

@rzlvmp的解决方案基本上有效,谢谢。 但是yum无论如何都要使用默认python,因为在/bin/yum中,解释器是
#/usr/bin/python

那么,有两种选择:

  • 对于特殊任务使用vars:
    ansible\u python\u解释器:/usr/bin/python3
    ,默认使用Python2

  • 编辑/bin/yum
    #/usr/bin/python->#/usr/bin/python2


  • @rzlvmp的解决方案基本上有效,谢谢。 但是yum无论如何都要使用默认python,因为在/bin/yum中,解释器是
    #/usr/bin/python

    那么,有两种选择:

  • 对于特殊任务使用vars:
    ansible\u python\u解释器:/usr/bin/python3
    ,默认使用Python2

  • 编辑/bin/yum
    #/usr/bin/python->#/usr/bin/python2


  • yum尚未移植到python3。必须使用python 2。尚未将yum移植到python 3。您必须使用python 2。