pyenv 1. 安装 Centos 7 的, 其他平台请参考网址
1 sudo yum install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils git gcc
1.1 自动安装 1 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
1.2 文件信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 #!/usr/bin/env bash set -e [ -n "$PYENV_DEBUG" ] && set -x if [ -z "$PYENV_ROOT" ]; then PYENV_ROOT="${HOME}/.pyenv" fi colorize() { if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2" else echo -n "$2" fi } # Checks for `.pyenv` file, and suggests to remove it for installing if [ -d "${PYENV_ROOT}" ]; then { echo colorize 1 "WARNING" echo ": Can not proceed with installation. Kindly remove the '${PYENV_ROOT}' directory first." echo } >&2 exit 1 fi shell="$1" if [ -z "$shell" ]; then shell="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)" shell="${shell##-}" shell="${shell%% *}" shell="$(basename "${shell:-$SHELL}")" fi failed_checkout() { echo "Failed to git clone $1" exit -1 } checkout() { [ -d "$2" ] || git clone --depth 1 "$1" "$2" || failed_checkout "$1" } if ! command -v git 1>/dev/null 2>&1; then echo "pyenv: Git is not installed, can't continue." >&2 exit 1 fi if [ -n "${USE_GIT_URI}" ]; then GITHUB="git://github.com" else GITHUB="https://github.com" fi checkout "${GITHUB}/pyenv/pyenv.git" "${PYENV_ROOT}" checkout "${GITHUB}/pyenv/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor" checkout "${GITHUB}/pyenv/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer" checkout "${GITHUB}/pyenv/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update" checkout "${GITHUB}/pyenv/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv" checkout "${GITHUB}/pyenv/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext" if ! command -v pyenv 1>/dev/null; then { echo colorize 1 "WARNING" echo ": seems you still have not added 'pyenv' to the load path." echo } >&2 case "$shell" in bash ) profile="~/.bashrc" ;; zsh ) profile="~/.zshrc" ;; ksh ) profile="~/.profile" ;; fish ) profile="~/.config/fish/config.fish" ;; * ) profile="your profile" ;; esac { echo "# Load pyenv automatically by adding" echo "# the following to ${profile}:" echo case "$shell" in fish ) echo "set -x PATH \"${PYENV_ROOT}/bin\" \$PATH" echo 'status --is-interactive; and . (pyenv init -|psub)' echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)' ;; * ) echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\"" echo "eval \"\$(pyenv init -)\"" echo "eval \"\$(pyenv virtualenv-init -)\"" ;; esac } >&2 fi
因为网络的限制,可以将GitHub地址设置为镜像的地址
1 2 3 4 # 设置安装的位置 export PYENV_ROOT=/opt/pyenv 需要在文件内部修改 在46行 GITHUB="https://gitclone.com/github.com"
2. 添加到 ~/.bashrc
1 2 3 echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.bashrc echo 'export PYENV_ROOT=~/.pyenv' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc
3. 一些常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # 列出可以下载的python版本 pyenv install -l # 下载 指定的python 版本 pyenv install 3.6.8 # 刷新本地环境 pyenv rehash # 卸载指定版本的python pyenv uninstall 3.6.8 # 指定shell使用的python版本 pyenv shell 3.6.8 # 创建虚拟环境 pyenv virtualenv 版本号 虚拟环境名称 # 删除虚拟环境 pyenv uninstall 虚拟环境名称 # 列出创建的虚拟环境 pyenv virtualenvs # 激活虚拟环境 pyenv activate 虚拟环境名称 # 退出当前的虚拟环境 pynev deactivate
4. 提高下载速度 1 2 3 4 # 去官方下载python版本 wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz # 将其安装在pyenv下的cache目录下面 (不存在就创建) pyenv install 3.6.8