之前介紹的的Zabbix腳本是用python3寫的,但是centos7默認安裝的是python2.7.5,所以我們需要升級到python3。
因為服務器是內網環境,不能訪問外網,所以本文就對離線環境下(無網絡)升級python及安裝模塊進行介紹。
Centos7升級python3
安裝python3
先介紹參考文檔,centos7將python默認版本升級。
1. 下載python-3.7.1安裝包並使用xFTP上傳到服務器。
2. 解壓,tar -zxvf Python-3.7.1.tgz
3. 進入解壓目錄: cd Python-3.7.1
4. 創建安裝目錄: mkdir /usr/local/python3.7.1
5. 編譯: ./configure --prefix=/usr/local/python3.7.1
6. 安裝: make && make install
7. 備份舊鏈接,新建軟鏈接: mv /usr/bin/python /usr/bin/python2.7.5
ln -s /usr/local/python3.7.1/bin/python3.7 /usr/bin/python
安裝完后可以介入命令 python -V,查看是否操作成功。
修改其他受影響的文件
因為系統默認使用python2.7.5,而python2和python3是由很大不同的,所以我們要修改受影響的配置文件。
1. 修改yum的配置文件
1.1 vim /usr/bin/yum
1.2 將文件頭部的 #!/usr/bin/python 改成#!/usr/bin/python2.7.5
1.3 vim /usr/libexec/urlgrabber-ext-down
1.4 將文件頭部的 #!/usr/bin/python 改成#!/usr/bin/python2.7.5
安裝過程中報錯處理
上述是正常安裝的步驟,但是在安裝過程中,因為缺少網絡環境,所以難免會碰到缺少依賴包導致的報錯。
1. zipimport.ZipImportError: can't decompress data
參考文檔如下:Python安裝常見問題(1):zipimport.ZipImportError: can't decompress data
安裝zlib相關依賴包,修改python安裝配置文件,重新安裝。
2. ModuleNotFoundError: No module named '_ctypes'
參考文檔如下:關於在centos下安裝python3.7.0以上版本時報錯ModuleNotFoundError: No module named '_ctypes'的解決辦法
安裝python3.7版本需要一個新的包libffi-devel,安裝此包之后再次進行編譯安裝即可。
使用中碰到的問題及處理方案
python安裝好后,我們就上手使用了,但是使用過程中又碰到了一些新的問題。
方向鍵和刪除鍵無法使用
參考文檔如下: python3方向鍵和刪除鍵無法使用
安裝readline-devel包,后重新編譯安裝。
PIP不能使用
Python不能使用PIP,因為SSL版本可能是1.0.1,python3.7版本最低支持1.0.2,需要升級ssl。
解決方案:安裝ssl-dev(不用修改配置檔),建立PIP軟鏈接!
參考文檔如下:
2. Linux學習-linux系統下python升級到python3.6步驟詳解,以及遇到的問題解決
3. python安裝完畢后,提示找不到ssl模塊的解決步驟
綜上,在升級python3之前,我們要先安裝zlib相關依賴包,libffi-devel包,readline-devel包,ssl-dev等。否則,會在安裝過程或者使用中碰到問題,重復編譯安裝~
無外網環境安裝python包
參考文檔如下:
本文使用了兩種安裝方法:
1. 安裝stomp時通過python setup.py install安裝。
2. 安裝kafka時通過pip install kafka_python-1.4.4-py2.py3-none-any.whl安裝。
可以在PyPI下載安裝包。