markosamuli.pyenv
markosamuli.pyenv
Rama | Pipeline |
---|---|
master |
Rol de Ansible para instalar pyenv y pyenv-virtualenv en máquinas de desarrollo de Ubuntu o macOS.
Opcionalmente, se puede instalar y usar pyenv-virtualenvwrapper para gestionar entornos.
No utilice este rol en servidores de producción, ya que solo admite la instalación de pyenv en el directorio de inicio del usuario.
Instalación desde Homebrew en macOS
El método predeterminado para instalar pyenv y complementos en macOS es usar Homebrew.
El rol no sabe cómo migrar desde instalaciones existentes de Homebrew a instalaciones basadas en Git, por lo que intentará detectar cualquier instalación existente y seguir usando el método anterior.
Si desea migrar, haga una copia de seguridad y elimine su directorio existente ~/.pyenv
antes de ejecutar este rol.
Instalación desde Homebrew en Linux
El rol incluye un soporte experimental para instalar pyenv y complementos con Homebrew en Linux.
El rol no instala Homebrew en Linux por sí mismo y espera que esté instalado en la ubicación predeterminada /home/linuxbrew/.linuxbrew
.
La instalación de versiones de Python con pyenv en Linux cuando existe una instalación de Homebrew tiene algunos problemas conocidos:
- La extensión readline no se compiló, pyenv instalado por Linuxbrew en Ubuntu 16 #1479
Versiones de Python instaladas
Este rol instala las versiones de Python definidas en la variable pyenv_python_versions
.
Para establecer la versión global, configure la variable pyenv_global
a la(s) versión(es) deseadas.
pyenv_global: "{{ pyenv_python37_version }} system"
Esto está configurado para usar las últimas versiones de Python 2 y Python 3 y la versión del sistema como predeterminada.
Cambios en los archivos de configuración de la shell
Este rol crea un archivo de configuración en ~/.pyenv/.pyenvrc
que se carga en los archivos .bashrc
y .zshrc
.
La finalización del código se carga de forma predeterminada.
Si está gestionando sus scripts de shell .dotfiles
o está utilizando un marco, debe establecer pyenv_init_shell
en false
y actualizar estos archivos usted mismo para mantenerlos limpios.
Configuración de referencia para .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
Configuración de referencia para .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 del Rol
La ruta a ~/.pyenv
se basa en variables de entorno:
pyenv_home: "{{ ansible_env.HOME }}"
pyenv_root: "{{ ansible_env.HOME }}/.pyenv"
Actualizar los archivos .bashrc
y .zshrc
en el directorio de inicio del usuario:
pyenv_init_shell: true
Versiones a instalar:
pyenv_version: "v1.2.13"
pyenv_virtualenv_version: "v1.1.5"
pyenv_virtualenvwrapper_version: "v20140609"
Últimas versiones de Python 3.7 y Python 3.8:
pyenv_python37_version: "3.7.6"
pyenv_python38_version: "3.8.1"
Las versiones de Python 2 y Python 3 se instalan de forma predeterminada:
pyenv_python_versions:
- "{{ pyenv_python37_version }}"
- "{{ pyenv_python38_version }}"
Establezca la versión global en Python 3.7 con un respaldo de system
:
pyenv_global: "{{ pyenv_python37_version }} system"
Instalar el complemento virtualenvwrapper:
pyenv_virtualenvwrapper: false
pyenv_virtualenvwrapper_home: "{{ ansible_env.HOME }}/.virtualenvs"
Instalar usando el administrador de paquetes Homebrew en macOS:
pyenv_install_from_package_manager: true
Detectar el método de instalación existente y usarlo:
pyenv_detect_existing_install: true
Instalar usando Homebrew en Linux:
pyenv_homebrew_on_linux: true
Ejemplo de Playbook
- hosts: localhost
connection: local
become: false
roles:
- role: markosamuli.pyenv
Actualizando versiones
Ejecute los siguientes scripts para obtener las últimas versiones de GitHub y actualizarlas en las configuraciones predeterminadas del rol.
Actualizar la liberación de pyenv:
./update-release pyenv
Actualizar la liberación de pyenv-virtualenv:
./update-release pyenv-virtualenv
Actualizar la versión predeterminada de Python 3.7:
./update-python python37
Actualizar la versión predeterminada de Python 3.8:
./update-python python38
Actualizar todas las versiones:
make update
Estilo de codificación
Instale los hooks de pre-commit y valide el estilo de codificación:
make lint
Ejecutar pruebas
Ejecute pruebas en Ubuntu y Debian usando Docker:
make test
Agradecimientos
El uso del archivo .pyenvrc
y partes utilizadas para instalar versiones de Python fueron tomadas del rol avanov.pyenv.
Desarrollo
Instale las dependencias de desarrollo en un virtualenv local:
make setup
Instale los hooks de pre-commit:
make install-git-hooks
Cambios
Licencia
Información del Autor
ansible-galaxy install markosamuli.pyenv