pyenv
markosamuli.pyenv
Ветка | Пайплайн |
---|---|
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
Изменения
Лицензия
Информация об авторе
ansible-galaxy install markosamuli/ansible-pyenv