--- - block: - name: Install the python 3 ppa repository apt_repository: repo={{ py3_ppa }} update_cache=yes state=present when: - py3_env_install - ansible_distribution_version is version_compare('18.04', '<') tags: [ "python", "py3_env", "py3_env_pkgs", 'python3' ] - name: Find the appropriate python3 minor version block: - name: Python minor version of Ubuntu 20.04 ansible.builtin.set_fact: py3_env_minor_version: '8' when: ansible_distribution_version is version_compare('20.04', '==') - name: Python minor version of Ubuntu 22.04 ansible.builtin.set_fact: py3_env_minor_version: '10' when: ansible_distribution_version is version_compare('22.04', '==') - block: - name: Install the python3 mandatory deb packages apt: name={{ py3_env_mandatory_dpkg }} state={{ py3_env_pkgs_state }} update_cache=yes cache_valid_time=600 - name: Install the python3 additional deb packages apt: name={{ py3_env_dpkg }} state={{ py3_env_pkgs_state }} update_cache=yes cache_valid_time=600 - name: Install python3-pip deb packages on Bionic or newer apt: name=python3-pip state={{ py3_env_pkgs_state }} update_cache=yes cache_valid_time=600 when: ansible_distribution_version is version_compare('18.04', '>=') - name: Remove info of deb python packages so that they can be upgraded using pip file: dest: '{{ item }}' state: absent loop: '{{ py3_deb_info_to_remove }}' - name: Install the correct pip3 version on Ubuntu < 18.04 shell: python{{ py3_env_version }} -m ensurepip && pip{{ py3_env_version }} install --upgrade pip setuptools wheel when: ansible_distribution_version is version_compare('18.04', '<') - name: Install a list of versioned pip3 packages on Ubuntu older than Bionic pip: executable=pip{{ py3_env_version }} name={{ item.pkg }} version={{ item.version }} extra_args={{ item.extra_args | default('') }} with_items: '{{ py3_env_versioned_pip_pkgs | default ([]) }}' when: ansible_distribution_version is version_compare('18.04', '<') tags: [ "python", "py3_env", "py3_env_pkgs", 'python3', 'py3_pkgs_versioned' ] - name: Install a list of pip3 packages on Ubuntu older than Bionic pip: executable=pip{{ py3_env_version }} name={{ py3_env_pip_pkgs }} state={{ py3_pip_pkgs_state }} when: ansible_distribution_version is version_compare('18.04', '<') tags: [ "python", "py3_env", "py3_env_pkgs", 'python3', 'py3_pkgs_latest' ] - name: Ensure that we have the latest pip, setuptools and wheel versions pip: executable: 'pip{{ py3_env_major_version }}' name: '{{ py3_env_pip_default_pkgs }}' state: latest - name: Install a list of binary pip3 packages in wheels format pip: executable=pip{{ py3_env_major_version }} name={{ py3_env_wheel_pip_pkgs }} state={{ py3_pip_pkgs_state }} tags: [ "python", "py3_env", "py3_env_pkgs", 'python3', 'py3_pkgs_wheels' ] - name: Install a list of versioned pip3 packages on Ubuntu Bionic or newer pip: executable=pip{{ py3_env_major_version }} name={{ item.pkg }} version={{ item.version }} extra_args={{ item.extra_args | default('') }} with_items: '{{ py3_env_versioned_pip_pkgs | default ([]) }}' when: ansible_distribution_version is version_compare('18.04', '>=') tags: [ "python", "py3_env", "py3_env_pkgs", 'python3', 'py3_pkgs_versioned' ] - name: Install a list of pip3 packages on Ubuntu Bionic or newer pip: executable=pip{{ py3_env_major_version }} name={{ py3_env_pip_pkgs }} state={{ py3_pip_pkgs_state }} when: ansible_distribution_version is version_compare('18.04', '>=') tags: [ "python", "py3_env", "py3_env_pkgs", 'python3', 'py3_pkgs_latest' ] when: py3_env_install tags: [ "python", "py3_env", "py3_env_pkgs", 'python3' ]