markosamuli.pyenv
markosamuli.pyenv
Branche | Pipeline |
---|---|
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
ansible-galaxy install markosamuli.pyenv