pyenv

markosamuli.pyenv

Качество Ansible Роль Ansible Выпуск на GitHub Лицензия

Ветка Пайплайн
master master

Роль Ansible для установки pyenv и pyenv-virtualenv на компьютерах с Ubuntu или macOS.

При желании можно установить и использовать pyenv-virtualenvwrapper для управления окружениями.

Не используйте эту роль на производственных серверах, так как она поддерживает установку pyenv только в домашней директории пользователя.

Установка из Homebrew на macOS

Методом по умолчанию для установки pyenv и плагинов на macOS является использование Homebrew.

Роль не знает, как мигрировать существующие установки Homebrew на установки на основе Git, поэтому она попытается обнаружить любое существующее устанавливаемое приложение и продолжит использовать предыдущий метод.

Если вы хотите выполнить миграцию, создайте резервную копию и удалите вашу существующую директорию ~/.pyenv перед запуском этой роли.

Установка из Homebrew на Linux

Роль включает в себя экспериментальную поддержку установки pyenv и плагинов с использованием Homebrew на Linux.

Роль не устанавливает Homebrew на самом Linux и ожидает, что он будет установлен в стандартной директории /home/linuxbrew/.linuxbrew.

Установка версий Python с помощью pyenv на Linux, когда установка Homebrew присутствует, имеет некоторые известные проблемы:

  • расширение readline не было скомпилировано, установленная версия pyenv с помощью Linuxbrew на Ubuntu 16 #1479

Установленные версии Python

Эта роль устанавливает версии Python, определенные в переменной pyenv_python_versions.

Чтобы установить глобальную версию, установите переменную pyenv_global на желаемую версию(и).

pyenv_global: "{{ pyenv_python37_version }} system"

Эта конфигурация настроена для использования последних версий Python 2 и Python 3, а также системной версии по умолчанию.

Изменения в конфигурационных файлах оболочки

Эта роль создает файл конфигурации в ~/.pyenv/.pyenvrc, который загружается в файлы .bashrc и .zshrc.

Автодополнение загружается по умолчанию.

Если вы управляете своими скриптами оболочки .dotfiles или используете фреймворк, вам следует установить pyenv_init_shell в false и обновить эти файлы самостоятельно, чтобы сохранить их чистыми.

Пример конфигурации .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

Пример конфигурации .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

Переменные роли

Путь к ~/.pyenv основан на переменных окружения:

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

Обновить файлы .bashrc и .zshrc в домашней директории пользователя:

pyenv_init_shell: true

Версии для установки:

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

Последние версии Python 3.7 и 3.8:

pyenv_python37_version: "3.7.6"
pyenv_python38_version: "3.8.1"

Версии Python 2 и 3 устанавливаются по умолчанию:

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

Установить глобальную версию на Python 3.7 с system как запасной:

pyenv_global: "{{ pyenv_python37_version }} system"

Установить плагин virtualenvwrapper:

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

Установить с использованием менеджера пакетов Homebrew на macOS:

pyenv_install_from_package_manager: true

Обнаружить существующий метод установки и использовать его:

pyenv_detect_existing_install: true

Установить с использованием Homebrew на Linux:

pyenv_homebrew_on_linux: true

Пример Playbook

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

Обновление версий

Запустите следующие скрипты, чтобы получить последние выпуски из GitHub и обновить их в параметрах роли.

Обновить выпуск pyenv:

./update-release pyenv

Обновить выпуск pyenv-virtualenv:

./update-release pyenv-virtualenv

Обновить стандартную версию Python 3.7:

./update-python python37

Обновить стандартную версию Python 3.8:

./update-python python38

Обновить все версии:

make update

Стиль кодирования

Установите хуки pre-commit и проверьте стиль кодирования:

make lint

Запуск тестов

Запустите тесты на Ubuntu и Debian с использованием Docker:

make test

Благодарности

Использование файла .pyenvrc и части, использованные для установки версии python, взяты из роли avanov.pyenv.

Разработка

Установите зависимости разработки в локальном virtualenv:

make setup

Установите хуки pre-commit:

make install-git-hooks

Изменения

Лицензия

Информация об авторе

О проекте

Installs pyenv and pyenv-virtualenv

Установить
ansible-galaxy install markosamuli/ansible-pyenv
Лицензия
mit
Загрузки
14378
Владелец
Random hacker. Engineering at @echo-health