TOOCS.python

Statut de construction Rôle Ansible

TOOCS / Rôle Ansible : TOOCS.python

/!\ Ce rôle a été renommé - Ancien nom : FlorianKempenich.python-virtualenv /!\

  • Installer plusieurs versions de python en utilisant asdf (ou pyenv)
  • Installer pipenv pour toutes les versions
  • Optionnel : Installer des paquets pip globaux pour la version par défaut de python

TOOCS ?

TOOCS - Les installations à un clic sont une série d'outils / rôles ansible conçus pour configurer un système en un clic. Ce sont un moyen simple et fiable de configurer un outil donné. Vous pouvez les utiliser tels quels ou, en inspectant leur code, comme un tutoriel à suivre étape par étape.

Ils sont, comme leur nom l'indique, opinionnés : bien qu'ils garantissent de configurer l'outil donné en un clic, ils ne garantissent pas la cohérence dans comment ils le font, de nouvelles versions peuvent introduire des changements incompatibles.
Lisez le code et assurez-vous de comprendre ce qui se passe !

Exigences

Ce rôle fonctionne uniquement sur MacOSX et Ubuntu/Debian.

Variables de rôle

  • python_versions

  • global_pip_packages

    • Liste des paquets pip à installer
    • Les paquets ne seront installés que pour la version par défaut de python (la première de la liste)
    • Par défaut : []
  • installation_method

  • asdf_skip_shell_setup

Méthodes d'installation

asdf

Méthode d'installation préférée et par défaut utilisant le gestionnaire de version asdf

L'installation et la configuration d'asdf ainsi que l'installation de python sont déléguées à un autre TOOCS : TOOCS.asdf.

Ce TOOCS ne s'occupe que de l'installation des modules pip globaux optionnels.

Après l'installation - avec asdf : Configuration du shell

  • Si vous utilisez zsh, c'est tout ! Votre shell a été automatiquement configuré lors de l'installation d'asdf.

  • Si vous n'utilisez PAS zsh, une configuration manuelle est requise, voir : TOOCS/asdf - Utilisateurs non zsh

  • Sinon, si asdf est déjà configuré sur votre machine, vous voudrez peut-être ignorer la configuration automatique du shell d'asdf => Mettez la variable asdf_skip_shell_setup à True


pyenv

Version alternative utilisant le gestionnaire de version pyenv

Après l'installation - avec pyenv : Configuration du shell

Comme pyenv est utilisé pour gérer les différentes versions de python, il doit être activé dans votre shell.

Ajoutez simplement ces lignes aux fichiers correspondants :

  • ~/.zshrc / ~/.bashrc

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
  • ~/.zlogin / ~/.bash_profile

if command -v pyenv 1>/dev/null 2>&1; then
    eval "$(pyenv init -)"
fi

La raison pour laquelle nous divisons l'initialisation entre ces deux fichiers est d'assurer un fonctionnement fluide avec pyenv et pipenv. De cette façon, l'activation de pyenv ne se fait qu'une seule fois par shell de connexion et n'interfère pas avec le sous-shell démarré avec pipenv shell.
En savoir plus : Problème Pyenv #184 - Mauvais Python à l'intérieur de 'pipenv shell'


Exemple de Playbook

- hosts: localhost
  tasks:
    - include_role:
        name: TOOCS.python
      vars:
        python_versions:
          - 3.7.0
          - 2.7.15
        global_pip_packages:
          - cheat
          - howdoi
          - ansible-droplet


# OU

- hosts: localhost
  tasks:
    - include_role:
        name: TOOCS.python
      vars:
        python_versions:
          - 3.7.0
        installation_method: asdf
        asdf_skip_shell_setup: True

# OU

- hosts: localhost
  tasks:
    - include_role:
        name: TOOCS.python
      vars:
        python_versions:
          - 3.7.0
        installation_method: pyenv

Licence

MIT

Informations sur l'auteur

Suivez-moi sur Twitter : @ThisIsFlorianK
En savoir plus sur mon travail : Florian Kempenich - Site personnel

À propos du projet

Install multiple versions of Python with some optional global packages

Installer
ansible-galaxy install TOOCS.python
Licence
mit
Téléchargements
117
Propriétaire
The Opinionated One-Click Setups - TOOCS - Logo made with DesignEvo (www.designevo.com)