安装`pyenv`的安装程序脚本

下面是对脚本各部分的详细解释:

1. 初始化和设置

#!/usr/bin/env bash

set -e
[ -n "$PYENV_DEBUG" ] && set -x
  • #!/usr/bin/env bash:指定脚本使用bash解释器执行。
  • set -e:如果脚本中的任何命令返回非零状态(失败),脚本将立即退出。
  • [ -n "$PYENV_DEBUG" ] && set -x:如果环境变量PYENV_DEBUG存在,则启用命令跟踪,以便调试脚本。

2. 设置 PYENV_ROOT

if [ -z "$PYENV_ROOT" ]; then
  if [ -z "$HOME" ]; then
    printf "$0: %s\n" \
      "Either \$PYENV_ROOT or \$HOME must be set to determine the install location." \
      >&2
    exit 1
  fi
  export PYENV_ROOT="${HOME}/.pyenv"
fi
  • 检查是否设置了PYENV_ROOT环境变量。如果没有,则将其设置为HOME目录下的.pyenv目录。

3. 定义 colorize 函数

colorize() {
  if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
  else echo -n "$2"
  fi
}
  • colorize函数用于在终端中打印带颜色的文本。如果标准输出是终端,则使用颜色代码,否则直接打印文本。

4. 检查 .pyenv 目录

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
  • 如果PYENV_ROOT目录已经存在,则打印警告信息并退出。这样可以避免在已有的pyenv目录中重新安装。

5. failed_checkoutcheckout 函数

failed_checkout() {
  echo "Failed to git clone $1"
  exit -1
}

checkout() {
  [ -d "$2" ] || git -c advice.detachedHead=0 clone --branch "$3" --depth 1 "$1" "$2" || failed_checkout "$1"
}
  • failed_checkout:如果git clone失败,打印错误信息并退出。
  • checkout:检查目标目录是否存在,如果不存在,则使用git clone从指定的远程仓库克隆代码。

6. 检查 Git 和 SSH

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_SSH}" ]; then
  if ! command -v ssh 1>/dev/null 2>&1; then
    echo "pyenv: configuration USE_SSH found but ssh is not installed, can't continue." >&2
    exit 1
  fi

  ssh -T git@github.com 1>/dev/null 2>&1 || EXIT_CODE=$?
  if [[ ${EXIT_CODE} != 1 ]]; then
      echo "pyenv: github ssh authentication failed."
      echo
      echo "In order to use the ssh connection option, you need to have an ssh key set up."
      echo "Please generate an ssh key by using ssh-keygen, or follow the instructions at the following URL for more information:"
      echo
      echo "> https://docs.github.com/en/repositories/creating-and-managing-repositories/troubleshooting-cloning-errors#check-your-ssh-access"
      echo
      echo "Once you have an ssh key set up, try running the command again."
    exit 1
  fi
fi
  • 检查是否安装了git,如果没有,打印错误信息并退出。
  • 如果设置了USE_SSH环境变量,检查是否安装了ssh。如果安装了,验证SSH连接到GitHub的身份认证是否成功。

7. 设置 GitHub URL 和克隆插件

if [ -n "${USE_SSH}" ]; then
  GITHUB="git@github.com:"
else
  GITHUB="https://github.com/"
fi

checkout "${GITHUB}pyenv/pyenv.git"            "${PYENV_ROOT}"                           "${PYENV_GIT_TAG:-master}"
checkout "${GITHUB}pyenv/pyenv-doctor.git"     "${PYENV_ROOT}/plugins/pyenv-doctor"      "master"
checkout "${GITHUB}pyenv/pyenv-update.git"     "${PYENV_ROOT}/plugins/pyenv-update"      "master"
checkout "${GITHUB}pyenv/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"  "master"
  • 根据USE_SSH环境变量选择GitHub的访问方式(SSH或HTTPS)。
  • 克隆pyenv及其插件(如pyenv-doctorpyenv-updatepyenv-virtualenv)到指定目录。

8. 检查 pyenv 是否在路径中

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

  { # Without args, `init` commands print installation help
    "${PYENV_ROOT}/bin/pyenv" init || true
    "${PYENV_ROOT}/bin/pyenv" virtualenv-init || true
  } >&2
fi
  • 检查pyenv命令是否在系统路径中。如果没有,打印警告信息,并尝试打印pyenv的初始化帮助,以便用户知道如何将pyenv添加到加载路径中。

总结

这个脚本的目的是安装pyenv,确保所需的工具(如gitssh)已经安装,并且处理了使用sshhttps克隆的情况。它还检查pyenv是否已经存在于系统路径中,并提供相关的帮助信息。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的`pip`是Python包管理器,用于安装、升级和卸载Python软件包。它使得开发者能够方便地管理依赖于Python的第三方库。在大多数Linux和macOS系统中,`pip`通常已经预装,如果你需要检查或安装它,可以按照以下步骤操作: 1. **检查是否已安装**: 打开终端(Windows用户可以打开命令提示符或PowerShell),输入以下命令并按回车: ``` pip --version ``` 如果pip版本存在,会显示版本号;若没有安装或未检测到,可能需要安装。 2. **安装pip (如果未安装)**: 对于Windows用户,可以通过Python的官方安装程序安装,选择“Add Python to PATH”选项,安装完成后pip通常就安装好了。 对于Linux和macOS,使用系统的包管理器(如apt、yum、brew)进行安装: - Debian/Ubuntu: `sudo apt-get install python3-pip` - CentOS/Fedora: `sudo yum install python3-pip` - macOS (Homebrew): `brew install python@3 && brew link python@3 --force` 3. **全局安装(首次使用)**: 使用pip安装Python包通常在项目的虚拟环境中进行,但如果你想全局安装,可以在终端执行: ``` python get-pip.py ``` 或者 ``` python3 get-pip.py ``` 这个命令需要从Python官方网站下载`get-pip.py`脚本。 4. **激活虚拟环境中的pip**: 在Python项目目录下创建并激活虚拟环境(如venv或pyenv),然后pip就在该环境中可用。 5. **安装特定包**: 要安装一个包,例如`requests`,在虚拟环境中使用: ``` pip install requests ``` 关于pip,你还想了解哪些内容?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值