markosamuli.pyenv

markosamuli.pyenv

Ansible 质量评分 Ansible 角色 GitHub 发布 许可证

分支 流水线
master master

Ansible 角色用于在 Ubuntu 或 macOS 开发机器上安装 pyenvpyenv-virtualenv

可选择性地,可以安装并使用 pyenv-virtualenvwrapper 来管理环境。

请勿在生产服务器上使用此角色,因为它仅支持在用户主目录下安装 pyenv。

在 macOS 上通过 Homebrew 安装

在 macOS 上,安装 pyenv 和插件的默认方法是使用 Homebrew。

该角色不知道如何从现有的 Homebrew 安装迁移到基于 Git 的安装,因此它会尝试检测任何现有安装并继续使用以前的方法。

如果要迁移,请在运行此角色之前备份并删除您现有的 ~/.pyenv 目录。

在 Linux 上通过 Homebrew 安装

该角色包括一种实验性支持,用于在 Linux 上通过 Homebrew 安装 pyenv 和插件。

该角色不在 Linux 上安装 Homebrew,而是期望它安装在默认的位置 /home/linuxbrew/.linuxbrew

在 Linux 上使用现有 Homebrew 安装时,使用 pyenv 安装 Python 版本存在一些已知问题:

  • readline 扩展未编译,Linuxbrew 在 Ubuntu 16 上安装了 pyenv #1479

安装的 Python 版本

此角色安装在 pyenv_python_versions 变量中定义的 Python 版本。

要设置全局版本,请将 pyenv_global 变量设置为所需版本。

pyenv_global: "{{ pyenv_python37_version }} system"

此配置使用最新的 Python 2 和 Python 3 版本,并将系统版本作为默认值。

对 Shell 配置文件的更改

该角色在 ~/.pyenv/.pyenvrc 中创建配置文件,该文件在 .bashrc.zshrc 文件中加载。

默认情况下启用代码补全。

如果您正在管理自己的 Shell 脚本 .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 和 Python 3.8 版本:

pyenv_python37_version: "3.7.6"
pyenv_python38_version: "3.8.1"

默认安装 Python 2 和 Python 3 版本:

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

将全局版本设置为 Python 3.7,且可以回退到系统版本:

pyenv_global: "{{ pyenv_python37_version }} system"

安装 virtualenvwrapper 插件:

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

在 macOS 上通过包管理器安装:

pyenv_install_from_package_manager: true

检测现有安装方法并使用:

pyenv_detect_existing_install: true

在 Linux 上使用 Homebrew 安装:

pyenv_homebrew_on_linux: true

示例剧本

- 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

编码风格

安装预提交钩子并验证编码风格:

make lint

运行测试

使用 Docker 在 Ubuntu 和 Debian 中运行测试:

make test

鸣谢

.pyenvrc 文件的使用以及用于安装 Python 版本的部分源于 avanov.pyenv 角色。

开发

在本地虚拟环境中安装开发依赖项:

make setup

安装 pre-commit 钩子:

make install-git-hooks

更改

许可证

作者信息

关于项目

Installs pyenv and pyenv-virtualenv

安装
ansible-galaxy install markosamuli.pyenv
许可证
mit
下载
15.8k
拥有者
Random hacker. Engineering at @echo-health