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 的環境。
執行 whereis python 命令
console output:
比較幸運,這台機子上了很多版本的 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 的環境情況,但是如果不幸的事,環境上沒有裝任何 Python 3 版本,那麼就得全新安裝一套 Python 3 環境。
通過執行命令 cat /proc/version
console output:
了解到是 Ubuntu 系統,不同的系統也會有影響。
下面我們就在 Ubuntu 系統來安裝全新 Python 3 環境
handle ModuleNotFoundError: No module named '_bz2'
Command 'lsb_release -a' returned non-zero exit status 1
完整的 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
絕大多數的 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 了,如果需要使用該版本,參考上面更改一下軟鏈接即可。