您的位置:首页 > 科技 > 能源 > 无锡有多少家公司_高端品牌网站建设策划方案_站长工具seo综合查询怎么用_关键词seo排名优化软件

无锡有多少家公司_高端品牌网站建设策划方案_站长工具seo综合查询怎么用_关键词seo排名优化软件

2024/12/23 10:03:48 来源:https://blog.csdn.net/uwoerla/article/details/144285269  浏览:    关键词:无锡有多少家公司_高端品牌网站建设策划方案_站长工具seo综合查询怎么用_关键词seo排名优化软件
无锡有多少家公司_高端品牌网站建设策划方案_站长工具seo综合查询怎么用_关键词seo排名优化软件

在这里插入图片描述

pyenv 安装脚本

curl https://pyenv.run | bash

执行上面这一行脚本就可以安装pyenv来满足你对 Python 多版本共存以及切换的支持。

pyenv搭配virtualenv可以满足你对Python虚拟环境版本的支持。个人感觉pyenvconda更轻量,更推荐使用。

那么上面的脚本到底干了什么事儿呢?

pyenv.run的内容

#!/bin/bash
#
# Usage: curl https://pyenv.run | bash
#
# For more info, visit: https://github.com/pyenv/pyenv-installer
#
index_main() {set -ecurl -s -S -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
}index_main

它去github获取了另一个脚本并执行,脚本的内容如下:

pyenv-installer 的内容

#!/usr/bin/env bashset -e
[ -n "$PYENV_DEBUG" ] && set -xif [ -z "$PYENV_ROOT" ]; thenif [ -z "$HOME" ]; thenprintf "$0: %s\n" \"Either \$PYENV_ROOT or \$HOME must be set to determine the install location." \>&2exit 1fiexport PYENV_ROOT="${HOME}/.pyenv"
ficolorize() {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{ echocolorize 1 "WARNING"echo ": Can not proceed with installation. Kindly remove the '${PYENV_ROOT}' directory first."echo} >&2exit 1
fifailed_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"
}if ! command -v git 1>/dev/null 2>&1; thenecho "pyenv: Git is not installed, can't continue." >&2exit 1
fi# Check ssh authentication if USE_SSH is present
if [ -n "${USE_SSH}" ]; thenif ! command -v ssh 1>/dev/null 2>&1; thenecho "pyenv: configuration USE_SSH found but ssh is not installed, can't continue." >&2exit 1fi# `ssh -T git@github.com' returns 1 on success# See https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connectionssh -T git@github.com 1>/dev/null 2>&1 || EXIT_CODE=$?if [[ ${EXIT_CODE} != 1 ]]; thenecho "pyenv: github ssh authentication failed."echoecho "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:"echoecho "> https://docs.github.com/en/repositories/creating-and-managing-repositories/troubleshooting-cloning-errors#check-your-ssh-access"echoecho "Once you have an ssh key set up, try running the command again."exit 1fi
fiif [ -n "${USE_SSH}" ]; thenGITHUB="git@github.com:"
elseGITHUB="https://github.com/"
ficheckout "${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"if ! command -v pyenv 1>/dev/null; then{ echocolorize 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

逐行解释

让AI帮我们解释一下这个脚本,这个脚本是用于安装 pyenv 的 Bash 脚本,pyenv 是一个用来管理多个 Python 版本的工具。脚本首先会检查一些条件,确保环境设置正确,然后从 GitHub 克隆 pyenv 和它的一些插件,并设置适当的路径和权限。

  1. 设置脚本行为和调试信息

    set -e
    [ -n "$PYENV_DEBUG" ] && set -x
    
    • set -e:如果脚本中某一行命令返回非零值(即出错),则立即退出脚本。
    • set -x:如果环境变量 PYENV_DEBUG 被设置,则开启调试模式,打印每个执行的命令。
  2. 设置 PYENV_ROOT

    if [ -z "$PYENV_ROOT" ]; thenif [ -z "$HOME" ]; thenprintf "$0: %s\n" \"Either \$PYENV_ROOT or \$HOME must be set to determine the install location." \>&2exit 1fiexport PYENV_ROOT="${HOME}/.pyenv"
    fi
    
    • 如果 PYENV_ROOT 未设置,且 HOME 变量也没有设置,脚本会输出错误并退出。
    • 如果 HOME 已设置,则默认将 PYENV_ROOT 设置为 $HOME/.pyenv
  3. 颜色化输出函数

    colorize() {if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"else echo -n "$2"fi
    }
    
    • colorize 函数用于输出带有颜色的文本,支持终端支持颜色时输出颜色,不支持时输出普通文本。
  4. 检查 PYENV_ROOT 目录是否已存在

    if [ -d "${PYENV_ROOT}" ]; then{ echocolorize 1 "WARNING"echo ": Can not proceed with installation. Kindly remove the '${PYENV_ROOT}' directory first."echo} >&2exit 1
    fi
    
    • 如果 PYENV_ROOT 目录已存在,脚本会输出警告并退出,要求用户先删除该目录才能继续安装。
  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 克隆失败,会输出错误信息并退出。
    • checkout:如果目标目录不存在,则使用 git clone 命令从指定 Git 仓库克隆代码。支持克隆指定分支($3)并且使用浅克隆(--depth 1)。
  6. 检查是否安装 Git

    if ! command -v git 1>/dev/null 2>&1; thenecho "pyenv: Git is not installed, can't continue." >&2exit 1
    fi
    
    • 如果系统没有安装 git,脚本会输出错误并退出。
  7. 检查 USE_SSH 配置

    if [ -n "${USE_SSH}" ]; thenif ! command -v ssh 1>/dev/null 2>&1; thenecho "pyenv: configuration USE_SSH found but ssh is not installed, can't continue." >&2exit 1fi# `ssh -T git@github.com' returns 1 on successssh -T git@github.com 1>/dev/null 2>&1 || EXIT_CODE=$?if [[ ${EXIT_CODE} != 1 ]]; thenecho "pyenv: github ssh authentication failed."exit 1fi
    fi
    
    • 如果环境变量 USE_SSH 设置了,脚本会检查系统是否安装了 ssh,如果没有安装,退出。
    • 然后,使用 ssh 测试 GitHub 的 SSH 连接,确保 SSH 密钥设置正确。
  8. 设置 GitHub 地址(基于是否使用 SSH)

    if [ -n "${USE_SSH}" ]; thenGITHUB="git@github.com:"
    elseGITHUB="https://github.com/"
    fi
    
    • 如果使用 SSH,设置 GitHub 地址为 git@github.com:,否则使用 HTTPS。
  9. 克隆 pyenv 和相关插件

    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"
    
    • 克隆 pyenv 主仓库以及其插件:pyenv-doctorpyenv-updatepyenv-virtualenv
  10. 提醒用户配置 pyenv 到 PATH

    if ! command -v pyenv 1>/dev/null; then{ echocolorize 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 没有被正确添加到 PATH,脚本会提醒用户,并尝试运行 pyenv initpyenv virtualenv-init 来显示如何配置。

总结

这个脚本的作用是为用户自动安装 pyenv 和相关插件。它会确保环境符合安装要求,检查 git 是否可用,确认用户是否有正确的 SSH 配置,并从 GitHub 克隆 pyenv 和其插件。然后它会提醒用户如何正确配置 pyenv,以便在系统中使用它。如果某些条件不满足,脚本会提前退出并给出相应的错误提示。

我们可以通过export PYENV_ROOT="/data/pyenv"设置PYENV_ROOTpyenv安装到指定的目录,从而避免日积月累各种依赖包塞满系统盘。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com