之前分享過一篇《Linux系統自帶Python2&yum的解除安裝及重灌》,介紹瞭如何解除安裝及重灌Linux(CentOS)自帶的的Python2.7。今天主要介紹如何在Linux系統下通過shell指令碼一鍵安裝Python3,以及如何臨時or永久更換映象源、管理虛擬環境。工欲善其事必先利其器,環境搭建是一切開發&自動化測試繞不開的前提。
在介紹shell指令碼一鍵安裝Python前,先來了解一下手工搭建的過程,或許更有助於我們理解自動化搭建的過程及原理。
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 -y install wget # 沒安裝wget工具時執行此命令 wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
tar -xzvf Python-3.7.5.tgz
yum install gcc -y # 安裝gcc編譯器 yum install libffi-devel -y # 3.7版本之後需要一個新的包libffi-devel cd Python-3.7.5 # 進入解壓後的資料夾 ./configure --prefix=/home/python # 設定指定安裝目錄 make && make install # 編譯&編譯安裝
export PYTHON_HOME=/home/python
export PATH=${PATH}:${PYTHON_HOME}/bin
vi /etc/profile # 在/etc/profile檔案中加入上面兩行內容 source /etc/profile # 新增完需要重新載入設定
shell指令碼本質上就是將上述一步步手工操作步驟中的命令整合一個檔案中,再加入一些判斷或引數互動,從而自動順序執行、實現自動化操作。
#!/bin/sh yum -y install wget # 安裝wget工具 yum -y install gcc # 安裝gcc # 安裝一堆依賴 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 -y install libffi-devel if [ ! -f "Python-3.7.5.tgz" ] # 判斷當前目錄是否存在Python安裝包 then echo Python-3.7.5.tgz not exist!!! exit -1 fi `tar -zxvf Python-3.7.5.tgz` # 解壓安裝包 if [ ! -d /home/python3 ] # 判斷home目錄下是否存在python3目錄,不存在就建立 then `mkdir -p /home/python3` cd Python-3.7.5 ./configure --prefix=/home/python3 # 設定安裝目錄為/home/python3 make && make install # 編譯&編譯安裝 fi # 新增Python環境變數到/etc/profile echo "export PYTHON_HOME=/home/python3" >>/etc/profile echo "export PATH=\${PATH}:\${PYTHON_HOME}\"/bin\"" >>/etc/profile # 重新載入組態檔,注意:執行指令碼時需使用source命令而非./或sh命令,否則環境變數不生效 `source /etc/profile` # 設定Python安裝映象源為阿里雲 `pip config set global.index-url https://mirrors.aliyun.com/pypi/simple` echo "=====`date`===== Python-3.7.5 install success !!!====="
注意事項:
執行指令碼需使用source命令而非./或sh命令,否則環境變數不生效,當然也可以再通過「source /etc/profile」命令使其生效。具體原理詳見之前分享過的《解決shell指令碼中"source /etc/profile"過載組態檔不生效的問題》
source python_install.sh
安裝成功後如下圖所示:
驗證一下python3是否安裝成功,以及指令碼最後更改的pip映象源是否生效:
從上圖可以看出,python3安裝成功,python映象源已成功替換為阿里雲映象源。
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps # 解除安裝python3 whereis python3 |xargs rm -frv # 刪除python3所有殘餘檔案,注意是解除安裝Python3,千萬要帶3,否則會把系統自帶的Python2和yum(依賴Python2)也解除安裝了 whereis python3 # 檢視是否存在python3 python3 # 進入python直譯器環境,若提示「-bash: python3: command not found」則說明解除安裝成功
在日常專案開發過程中,由於每個專案所用到的依賴包版本可能不一致,尤其是一些老專案。因此,為了避免各個專案之間環境相互「汙染」,我們可以針對各個專案分別建立各自的虛擬環境。
python3 -m venv auto_test # 新建名為auto_test的虛擬環境目錄 cd auto_test/bin # 進入虛擬環境所在資料夾的bin目錄(Windows進入Scripts目錄) source activate # 啟用虛擬環境(Linux&Mac系統用source命令,Windows用.\activate.bat命令啟用
啟用成功後,命令列最前面會顯示一個:(虛擬環境名稱)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple(映象地址) module(模組名稱)
國內映象源:
清華:https://pypi.tuna.tsinghua.edu.cn/simple
阿里雲:http://mirrors.aliyun.com/pypi/simple/
中國科技大學:https://pypi.mirrors.ustc.edu.cn/simple/
華中理工大學:http://pypi.hustunique.com/
山東理工大學:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
細心的同學或許會發現,其實在上述shell指令碼中已經設定了阿里雲的映象源,不過如果沒有通過指令碼設定,我們也可以手工設定。
如果不想每次安裝第三方包的時候都指定映象源,也可以使用如下方法永久指定安裝映象源,一勞永逸
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple # 永久設定國內映象源 pip config list # 檢視下載源設定列表
設定好映象源後,可以使用「pip config list」命令檢視下載源設定列表,具體寫入的組態檔路徑為:
/root/.config/pip/pip.conf
windows系統設定和檢視方法相同
pip freeze > requirements.txt # 匯出當前環境下已安裝的依賴包列表到指定檔案 pip download -r requirements.txt -d . # 下載指定檔案中的所有依賴包,不安裝 pip install -r requirements.txt # 批次安裝
更多一手測試開發技術實戰,歡迎掃碼關注!