引言
Jenkins 实现 CI/CD,要运行 Pyhon 脚本,而有些 VM 默认只装了 Python 2,但脚本必须用 Python 3 环境来执行。或则系统自带 Python 2 和 Python 3 版本,但是需要更新版本的 Python 3。当然如果你能很方便的找到 DevOps 工程师,这个问题就很好解决了,直接在 VM 模块上装 Python 3 便可以,但也有会遇到联系不到 DevOps,只能苦逼地脚本安装,每次运行 Python 脚本之前,先在随机分配 VM 上装一遍 Python 3. 我就是后面一种,不能直接 log in 到 VM 操作, 只能通过命令属于盲人摸象型的探索,记录一下经历了一些坑。
内容提要:
- 了解 Python 环境
- 全新安装 Python 3
- 升级 Python
了解 Python 环境
可以通过一些命令,来了解一下 Python 的环境。
查看当前环境安装的 Python
执行 whereis python 命令
console output:
比较幸运,这台机子上了很多版本的 Python。
查看 Python 对应的软链接
执行 ls -l /usr/bin|grep python 命令先查看之前 Python 对应软链接
console output:
Python 3 对应的是 Python 3.8 版本
Python 2 对应的是 Python 2.7 版本
Python 对应的是 Python 3
可以进一步验证版本:执行下列命令
python -V
python2 -V
python3 -V
console output:
全新安装 Python 3
通过一些命令了解到 Python 的环境情况,但是如果不幸的事,环境上没有装任何 Python 3 版本,那么就得全新安装一套 Python 3 环境。
了解系统版本
通过执行命令 cat /proc/version
console output:
了解到是 Ubuntu 系统,不同的系统也会有影响。
下面我们就在 Ubuntu 系统来安装全新 Python 3 环境
- 安装编译依赖项
sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev
如果不进行这步可能会出现一些问题,比如:
handle ModuleNotFoundError: No module named '_bz2'
Command 'lsb_release -a' returned non-zero exit status 1
- 下载并解压源码包
wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
tar -xvJf Python-3.11.0.tar.xz - 编译安装
cd Python-3.11.0/
sudo ./configure prefix=/usr/local/py3 CFLAGS=-fPIC
sudo make && make install - 修改软链接
sudo ln -sf /usr/local/py3/bin/python3.11 /usr/bin/python3
sudo ln -sf /usr/local/py3/bin/pip3.11 /usr/bin/pip3 - 测试是否成功
python3 -V
pip3 -V 或 python3 -m pip -V
完整的 Shell 脚本:
cd /usr/local
if [ ! -d "/usr/local/py3" ]; then
sudo mkdir /usr/local/py3
fi
sudo chmod -R 777 /usr/local/py3
cd /tmp
sudo apt-get install -y zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev
wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
tar -xvJf Python-3.11.0.tar.xz
cd Python-3.11.0/
sudo ./configure prefix=/usr/local/py3 CFLAGS=-fPIC
sudo make && make install
sudo ln -sf /usr/local/py3/bin/python3.11 /usr/bin/python3
sudo ln -sf /usr/local/py3/bin/pip3.11 /usr/bin/pip3
python3 -V
pip3 -V
升级 Python
绝大多数的 Linux 发行版(Ubuntu、CentOS 等)都默认自带了 Python。有的 Linux 发行版甚至还会自带两个版本的 Python,例如最新版的 Ubuntu 会自带 Python 2.x 和 Python 3.x。你觉得现有的 Python 3 版本不够新,那么就需要更新 Python 版本。
在 Ubuntu 终端执行以下两条命令即可更新 Python 版本:
sudo apt-get update
sudo apt-get install python3.11
第一条命令用来指定更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 所列出的源地址,这样能够保证获得最新的安装包。
第二条命令用来指定安装 Python 3.11,这是目前最新的 Python 版本。
Console Output:
相比前面没有升级,多了个 python3.11 了,如果需要使用该版本,参考上面更改一下软链接即可。