手动安装 首先要知道python的安装位置
可以看见 Python 是安装在 /usr/bin 里面的。
我们进入安装目录 /usr/bin 输入 ll python*
查看 python 的链接
从上图我们可以看到,Python 是指向 python 2 ,而 Python 2 是指向 Python 2.7。
现在我们要安装 Python 3,应当让python 指向 python 3 ,而 Python 2 继续指向 Python 2.7,这样可以让两个版本共存。
下载 Python 3 官方的下载地址是: https://www.python.org/ftp/python/ ,在这里可以找到所有版本,选择所需要的tar.x 文件
使用 wget 下载
1 2 3 wget http://npm.taobao.org/mirrors/python/3.7.5/Python-3.7.5.tar.xz wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz
Linux系统中的wget是一个下载文件的工具,它用在命令行下。 默认文件下载在当前工作路径。可以设置-P参数指定文件的下载地址
这里在tmp 文件下用的淘宝镜像,选择的版本是 3.7.5 ,提高下载速度。
解压文件 压缩文件: tar -czvf
解压文件: tar -xzvf
这里我们使用 tar -xzvf Python-3.7.5.tar.xz
,笔者在这里出现了问题。
如果出现问题,可按以下方法
1 2 3 xz -d Python-3.7.5.tar.xz tar -xf Python-3.7.5.tar
成功了之后,可以看见一个 Python-3.7.5 文件
编译和安装 Python 安装编译工具(root下,一次性完成) 1 2 3 4 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install -y libffi-devel zlib1g-dev yum install zlib* -y
创建编译目录 1 mkdir /usr/local/python3
安装 Python 3 1 2 3 cd Python-3.7.5 ./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl make && make install
如果没报错,那么恭喜你,安装成功了
创建链接 先将原来的链接备份
1 2 3 4 5 mv /usr/bin/python /usr/bin/python.bakln -s /usr/local/python3/bin/python3 /usr/local/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
要将python
命令设置为python3
,可以创建一个软链接(symbolic link),这样输入python
时,系统会调用python3
。同样的方法也适用于pip
。以下是具体步骤:
创建python的软链接指向python3
1 sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python
如果您已经安装了pip3,同样创建一个软链接使pip指向pip3
1 sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
确认更改:
设置环境变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #!/bin/bash PYTHON3=$(which python3 2>/dev/null) if [ -z "$PYTHON3 " ]; then PYTHON3=$(find / -name "python3" -path "*/bin/python3" 2>/dev/null | head -n 1) if [ -n "$PYTHON3 " ]; then export PATH=$(dirname "$PYTHON3 " ):$PATH echo "已将 Python 3 添加到 PATH 环境变量中。" else echo "在系统中没有找到 Python 3。请确保 Python 3 已安装。" exit 1 fi fi echo "使用 Python 3 的路径为: $PYTHON3 "
验证 输入python -V
输入pip -V
常看本机的Python 版本
脚本安装 源码包安装 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 #!/bin/bash PYTHON_VERSION="3.7.5" DOWNLOAD_URL="https://www.python.org/ftp/python/$PYTHON_VERSION /Python-$PYTHON_VERSION .tar.xz" INSTALL_DIR="/usr/local/python$PYTHON_VERSION " if [[ $EUID -ne 0 ]]; then echo "此脚本必须以root权限运行" exit 1 fi echo "检查Python安装位置..." which python &>/dev/null && { echo "Python已安装在$(which python) " } || { echo "Python未安装在标准路径" } echo "下载Python $PYTHON_VERSION ..." wget -O Python-$PYTHON_VERSION .tar.xz $DOWNLOAD_URL && echo "下载成功" || { echo "下载失败,请检查网络连接或下载地址" exit 1 } echo "解压Python $PYTHON_VERSION ..." tar -xvf Python-$PYTHON_VERSION .tar.xz && echo "解压成功" || { echo "解压失败,请检查文件是否完整" exit 1 } cd Python-$PYTHON_VERSION echo "安装编译工具和依赖..." yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install -y libffi-devel zlib1g-dev yum install zlib* -y echo "创建编译目录..." mkdir -p $INSTALL_DIR echo "编译和安装Python $PYTHON_VERSION ..." ./configure --prefix=$INSTALL_DIR --enable-optimizations --with-ssl && echo "配置成功" || { echo "配置失败,请检查依赖是否正确安装" exit 1 } make && make install && echo "安装成功" || { echo "编译或安装失败,请检查编译工具是否正确安装" exit 1 } echo "创建链接..." mv /usr/bin/python /usr/bin/python.bakln -s $INSTALL_DIR /bin/python3 /usr/bin/python && echo "Python链接创建成功" || { echo "Python链接创建失败" exit 1 } ln -s $INSTALL_DIR /bin/pip3 /usr/bin/pip && echo "Pip链接创建成功" || { echo "Pip链接创建失败" exit 1 } echo "验证安装..." python --version && pip --version && echo "Python和Pip版本验证成功" || { echo "验证失败,请检查链接是否创建正确" exit 1 } echo "Python $PYTHON_VERSION 安装完成!"
yum安装 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 #!/bin/bash if [[ $EUID -ne 0 ]]; then echo "此脚本必须以root权限运行" exit 1 fi echo "安装EPEL仓库..." yum install -y epel-release echo "更新yum缓存..." yum makecache fast echo "安装Python 3..." yum install -y python3 echo "验证Python安装..." python3 --version && pip3 --version && echo "Python3和Pip3安装成功。" echo "Python 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 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 #!/bin/bash PYTHON_VERSION="3.7.5" DOWNLOAD_URL="https://www.python.org/ftp/python/$PYTHON_VERSION /Python-$PYTHON_VERSION .tar.xz" INSTALL_DIR="/usr/local/python$PYTHON_VERSION " PYTHON_ARCHIVE="Python-$PYTHON_VERSION .tar.xz" PYTHON_SOURCE_DIR="Python-$PYTHON_VERSION " if [[ $EUID -ne 0 ]]; then echo "此脚本必须以root权限运行" exit 1 fi echo "检查Python安装位置..." which python &>/dev/null && { echo "Python已安装在$(which python) " } || { echo "Python未安装在标准路径" } if [ ! -f $PYTHON_ARCHIVE ]; then echo "下载Python $PYTHON_VERSION ..." wget -O $PYTHON_ARCHIVE $DOWNLOAD_URL && echo "下载成功" || { echo "下载失败,请检查网络连接或下载地址" exit 1 } else echo "Python安装包已存在,跳过下载步骤。" fi if [ ! -d $PYTHON_SOURCE_DIR ]; then echo "解压Python $PYTHON_VERSION ..." tar -xvf $PYTHON_ARCHIVE && echo "解压成功" || { echo "解压失败,请检查文件是否完整" exit 1 } else echo "Python源代码目录已存在,跳过解压步骤。" fi cd $PYTHON_SOURCE_DIR echo "安装编译工具和依赖..." yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install -y libffi-devel zlib1g-dev yum install zlib* -y echo "创建编译目录..." mkdir -p $INSTALL_DIR echo "编译和安装Python $PYTHON_VERSION ..." ./configure --prefix=$INSTALL_DIR --enable-optimizations --with-ssl && echo "配置成功" || { echo "配置失败,请检查依赖是否正确安装" exit 1 } make && make install && echo "安装成功" || { echo "编译或安装失败,请检查编译工具是否正确安装" exit 1 } echo "创建链接..." if [ -f /usr/bin/python ]; then mv /usr/bin/python /usr/bin/python.bak fi ln -sf $INSTALL_DIR /bin/python3 /usr/bin/python && echo "Python链接创建成功" || { echo "Python链接创建失败" exit 1 } ln -sf $INSTALL_DIR /bin/pip3 /usr/bin/pip && echo "Pip链接创建成功" || { echo "Pip链接创建失败" exit 1 } echo "验证安装..." python --version && pip --version && echo "Python和Pip版本验证成功" || { echo "验证失败,请检查链接是否创建正确" exit 1 } echo "Python $PYTHON_VERSION 安装完成!" echo "安装包位置:$(pwd) /Python-$PYTHON_VERSION .tar.xz" echo "Python安装位置:$INSTALL_DIR /bin/python3" echo "Pip安装位置:$INSTALL_DIR /bin/pip3"
源码包卸载 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 #!/bin/bash read -p "请输入要卸载的Python版本(例如3.7.5): " PYTHON_VERSIONINSTALL_DIR="/usr/local/python$PYTHON_VERSION " if [[ $EUID -ne 0 ]]; then echo "此脚本必须以root权限运行" exit 1 fi echo "正在卸载Python $PYTHON_VERSION ..." if yum list installed | grep -q python$PYTHON_VERSION ; then yum remove -y python$PYTHON_VERSION echo "已通过yum卸载Python $PYTHON_VERSION " fi if rpm -q python$PYTHON_VERSION ; then rpm -e python$PYTHON_VERSION echo "已通过rpm卸载Python $PYTHON_VERSION " fi if [ -d "$INSTALL_DIR " ]; then rm -rf $INSTALL_DIR echo "已删除编译安装的Python目录 $INSTALL_DIR " fi if [ -L "/usr/bin/python" ]; then rm -f /usr/bin/python echo "已删除软链接 /usr/bin/python" fi if [ -L "/usr/bin/pip" ]; then rm -f /usr/bin/pip echo "已删除软链接 /usr/bin/pip" fi if [ -f "/usr/bin/python.bak" ]; then mv /usr/bin/python.bak /usr/bin/python echo "已恢复原来的Python链接" fi echo "Python $PYTHON_VERSION 卸载完成!"
YUM的处理 而 yum
在 CentOS 7 中默认使用 Python 2.7。Python2.7 的链接不要删除。
yum使用python2.7
备份原始的 yum 和其他相关文件 :
1 2 cp /usr/bin/yum /usr/bin/yum.bakcp /usr/libexec/urlgrabber-ext-down /usr/libexec/urlgrabber-ext-down.bak
修改 /usr/bin/yum
文件 : 将第一行的 #!/usr/bin/python
更改为 #!/usr/bin/python2.7
,这样 yum 就会使用 Python 2.7。
1 sed -i 's|#!/usr/bin/python|#!/usr/bin/python2.7|' /usr/bin/yum
修改 /usr/libexec/urlgrabber-ext-down
文件 : 同样,将第一行的 #!/usr/bin/python
更改为 #!/usr/bin/python2.7
。
1 sed -i 's|#!/usr/bin/python|#!/usr/bin/python2.7|' /usr/libexec/urlgrabber-ext-down
验证 yum
是否能正常工作 : 运行 yum
命令来检查是否正常。
脚本法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #!/bin/bash PYTHON2_PATH=$(find / -name "python2" -path "*/bin/python2" 2>/dev/null | head -n 1) sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' /usr/bin/yum sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' /usr/libexec/urlgrabber-ext-down if yum --version; then echo "Yum现在可用" else echo "Yum仍然不可用" exit 1 fi
还有问题将将文件的第一行#!/usr/bin/python
更改为#!/usr/bin/python2
,确保它指向Python 2的正确路径:
1 2 vim /usr/bin/yum vim /usr/libexec/urlgrabber-ext-down