markosamuli.pyenv

markosamuli.pyenv

Puntuación de Calidad de Ansible Rol de Ansible Liberación de GitHub Licencia

Rama Pipeline
master 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

Acerca del proyecto

Installs pyenv and pyenv-virtualenv

Instalar
ansible-galaxy install markosamuli.pyenv
Licencia
mit
Descargas
15.8k
Propietario
Random hacker. Engineering at @echo-health