markosamuli.pyenv

markosamuli.pyenv

Score de qualité Ansible Rôle Ansible Version GitHub Licence

Branche Pipeline
master master

Rôle Ansible pour installer pyenv et pyenv-virtualenv sur des machines de développement Ubuntu ou macOS.

En option, pyenv-virtualenvwrapper peut être installé et utilisé pour gérer les environnements.

N'utilisez pas ce rôle sur des serveurs de production car il ne prend en charge que l'installation de pyenv dans le répertoire personnel de l'utilisateur.

Installation depuis Homebrew sur macOS

La méthode par défaut pour installer pyenv et ses plugins sur macOS est d'utiliser Homebrew.

Le rôle ne sait pas comment migrer depuis des installations Homebrew existantes vers des installations basées sur Git, il essaiera donc de détecter toute installation existante et continuera d'utiliser la méthode précédente.

Si vous souhaitez migrer, sauvegardez et supprimez votre répertoire ~/.pyenv avant d'exécuter ce rôle.

Installation depuis Homebrew sur Linux

Le rôle inclut un support expérimental pour installer pyenv et ses plugins avec Homebrew sur Linux.

Le rôle n'installe pas Homebrew sur Linux lui-même et il s'attend à ce qu'il soit installé à l'emplacement par défaut /home/linuxbrew/.linuxbrew.

L'installation de versions de Python avec pyenv sur Linux lorsque l'installation Homebrew existe a quelques problèmes connus :

  • L'extension readline n'a pas été compilée, pyenv installé par Linuxbrew sur Ubuntu 16 #1479

Versions de Python installées

Ce rôle installe les versions de Python définies dans la variable pyenv_python_versions.

Pour définir la version globale, réglez la variable pyenv_global sur la ou les versions souhaitées.

pyenv_global: "{{ pyenv_python37_version }} system"

Ceci est configuré pour utiliser les dernières versions de Python 2 et Python 3 ainsi que la version système par défaut.

Modifications des fichiers de configuration du shell

Ce rôle crée un fichier de configuration dans ~/.pyenv/.pyenvrc qui est chargé dans les fichiers .bashrc et .zshrc.

La complétion de code est chargée par défaut.

Si vous gérez vos scripts shell .dotfiles ou utilisez un framework, vous devriez régler pyenv_init_shell sur false et mettre à jour ces fichiers vous-même pour les garder propres.

Configuration de référence pour .bashrc :

if [ -e "$HOME/.pyenv/.pyenvrc" ]; then
  source $HOME/.pyenv/.pyenvrc
  if [ -e "$HOME/.pyenv/completions/pyenv.bash" ]; then
    source $HOME/.pyenv/completions/pyenv.bash
  elif [ -e "/usr/local/opt/pyenv/completions/pyenv.bash" ]; then
    source /usr/local/opt/pyenv/completions/pyenv.bash
  fi
fi

Configuration de référence pour .zshrc :

if [ -e "$HOME/.pyenv/.pyenvrc" ]; then
  source $HOME/.pyenv/.pyenvrc
  if [ -e "$HOME/.pyenv/completions/pyenv.zsh" ]; then
    source $HOME/.pyenv/completions/pyenv.zsh
  elif [ -e "/usr/local/opt/pyenv/completions/pyenv.zsh" ]; then
    source /usr/local/opt/pyenv/completions/pyenv.zsh
  fi
fi

Variables du rôle

Le chemin vers ~/.pyenv est basé sur les variables d'environnement :

pyenv_home: "{{ ansible_env.HOME }}"
pyenv_root: "{{ ansible_env.HOME }}/.pyenv"

Mettre à jour les fichiers .bashrc et .zshrc dans le répertoire personnel de l'utilisateur :

pyenv_init_shell: true

Versions à installer :

pyenv_version: "v1.2.13"
pyenv_virtualenv_version: "v1.1.5"
pyenv_virtualenvwrapper_version: "v20140609"

Dernières versions de Python 3.7 et Python 3.8 :

pyenv_python37_version: "3.7.6"
pyenv_python38_version: "3.8.1"

Les versions de Python 2 et Python 3 sont installées par défaut :

pyenv_python_versions:
  - "{{ pyenv_python37_version }}"
  - "{{ pyenv_python38_version }}"

Définir la version globale sur Python 3.7 avec un repli sur system :

pyenv_global: "{{ pyenv_python37_version }} system"

Installer le plugin virtualenvwrapper :

pyenv_virtualenvwrapper: false
pyenv_virtualenvwrapper_home: "{{ ansible_env.HOME }}/.virtualenvs"

Installer en utilisant le gestionnaire de paquets Homebrew sur macOS :

pyenv_install_from_package_manager: true

Détecter la méthode d'installation existante et l'utiliser :

pyenv_detect_existing_install: true

Installer avec Homebrew sur Linux :

pyenv_homebrew_on_linux: true

Exemple de Playbook

- hosts: localhost
  connection: local
  become: false
  roles:
    - role: markosamuli.pyenv

Mise à jour des versions

Exécutez les scripts suivants pour obtenir les dernières versions depuis GitHub et les mettre à jour dans les valeurs par défaut du rôle.

Mettre à jour la version pyenv :

./update-release pyenv

Mettre à jour la version pyenv-virtualenv :

./update-release pyenv-virtualenv

Mettre à jour la version par défaut de Python 3.7 :

./update-python python37

Mettre à jour la version par défaut de Python 3.8 :

./update-python python38

Mettre à jour toutes les versions :

make update

Style de codage

Installez les hooks de pré-validation et validez le style de codage :

make lint

Exécuter des tests

Exécutez des tests sur Ubuntu et Debian en utilisant Docker :

make test

Remerciements

L'utilisation du fichier .pyenvrc et certaines parties utilisées pour installer la version de Python proviennent du rôle avanov.pyenv.

Développement

Installez les dépendances de développement dans un virtualenv local :

make setup

Installez les hooks pre-commit :

make install-git-hooks

Changements

Licence

Informations sur l'auteur

À propos du projet

Installs pyenv and pyenv-virtualenv

Installer
ansible-galaxy install markosamuli.pyenv
Licence
mit
Téléchargements
15.8k
Propriétaire
Random hacker. Engineering at @echo-health