#!/usr/bin/env bash # ----------------------------------------------------------------------------- # Description: # Configure pyenv. # # Skip in Codespaces (use pre-installed Python) [[ "$DOTS_ENV" == "codespaces" ]] && { log_pass "Skipping in Codespaces"; return 0; } export PYENV_ROOT="$HOME/.pyenv" if ! echo "$PATH" | grep -q "$PYENV_ROOT"; then export PATH="$PYENV_ROOT/bin:$PATH" fi if ! command -v pyenv &>/dev/null; then case "$DOTS_PKG" in apt) # https://github.com/pyenv/pyenv/wiki#suggested-build-environment sudo apt-get install -qq build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev curl \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev # see https://github.com/pyenv/pyenv-installer bash -c "$(curl -fsSL https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer)" ;; pacman) # Prefer native packages if available; otherwise install build deps then use installer if ! sudo pacman -Qi pyenv >/dev/null 2>&1; then sudo pacman -S --noconfirm --needed base-devel openssl zlib-ng-compat bzip2 readline sqlite xz tk libffi curl bash -c "$(curl -fsSL https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer)" else sudo pacman -S --noconfirm --needed pyenv pyenv-virtualenv fi ;; brew) brew install pyenv brew install pyenv-virtualenv ;; *) log_warn "Skipping pyenv install: no supported package manager found" ;; esac fi if [[ "$DOTS_OS" == "linux" ]]; then virtualenv_path="$(pyenv root)/plugins/pyenv-virtualenv" if [ ! -d "$virtualenv_path" ]; then git clone \ https://github.com/pyenv/pyenv-virtualenv.git \ "$virtualenv_path" fi unset virtualenv_path fi eval "$(pyenv init --path)" pyenv --version