#!/usr/bin/env bash declare -a py_versions=( \ "3" \ "3.5" \ "3.6" \ "3.7" \ "3.8" \ ) if [ -f /etc/os-release ]; then source /etc/os-release fi if which apt > /dev/null; then apt update -qq apt -y install \ make \ build-essential \ libssl-dev \ zlib1g-dev \ libbz2-dev \ libreadline-dev \ libsqlite3-dev \ wget \ curl \ llvm \ libncurses5-dev \ libncursesw5-dev \ xz-utils \ tk-dev \ libffi-dev \ liblzma-dev \ libxml2-dev \ libxmlsec1-dev \ python3-openssl \ git \ graphviz \ libxslt1-dev fi if which yum > /dev/null; then yum -y groupinstall "Development Tools" yum -y install \ bzip2 \ bzip2-devel \ git \ graphviz \ libffi-devel \ libxslt-devel \ openldap-devel \ openssl-devel \ readline-devel \ sqlite \ sqlite-devel \ xz \ xz-devel \ zlib-devel fi if [ ! -d ${HOME}/.pyenv ]; then git clone https://github.com/pyenv/pyenv.git ${HOME}/.pyenv fi cd ${HOME}/.pyenv git pull cd ~- if [ ! -f ${HOME}/.pyenv/bin/get-pip.py ]; then wget -O ${HOME}/.pyenv/bin/get-pip.py https://bootstrap.pypa.io/get-pip.py fi export PYENV_ROOT="${HOME}/.pyenv" export PATH="${PYENV_ROOT}/bin:${PATH}" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)"; fi ${PYENV_ROOT}/plugins/python-build/install.sh for short_ver in "${py_versions[@]}"; do echo "Checking Python ${short_ver}"; if [ -z "${short_ver##*.*}" ]; then export long_ver=$(pyenv install -l | \ grep -Po "(?<=\s)[0-9\.]+$" | \ grep "${short_ver}." | \ tail -n1); echo "Installing /usr/local/bin/python${short_ver} (${long_ver}) via pyenv." if [ "${ID}" == "debian" ]; then CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib python-build ${long_ver} /usr/local/ else CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib64 python-build ${long_ver} /usr/local/ fi echo "Updating pip, setuptools, and virtualenv in /usr/local/bin/python${short_ver}" /usr/local/bin/python${short_ver} ${HOME}/.pyenv/bin/get-pip.py /usr/local/bin/python${short_ver} -m pip install -U pip setuptools virtualenv else if [ -f /usr/bin/python${short_ver} ]; then echo "Updating pip, setuptools, and virtualenv in /usr/bin/python${short_ver}" /usr/bin/python${short_ver} ${HOME}/.pyenv/bin/get-pip.py /usr/bin/python${short_ver} -m pip install -U pip setuptools virtualenv fi fi done