Linux服務器系統默認的python版本通常是python2,如果需要使用最新的python3那麼我們可以編譯安裝源碼包到獨立目錄,這和系統默認環境之間是沒有任何影響的,python3和python2兩個環境並存。
- Python官網下載python,下載之後的安裝包“Python-3.7.3.tgz”保存到了本地的電腦上,需要scp的服務器的指定路徑下。也可以使用wget命令直接在服務器上獲取。
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
- 解壓安裝包
tar -xvzf Python-3.7.3.tgz
- 爲pythoh3指定一個目錄
mkdir /usr/local/python3
- 配置編譯
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl # --with-ssl最好配置上,否則在使用pip的時候可能會報TLS/SSL不可用的error,這裏對ssl的版本也有要求,低版本的ssl會配置失敗
在編譯的過程中,指定了安裝路徑,指定了安裝路徑有利於後期對python3的使用與管理。
- 對源代碼進行編譯,生成可執行文件
make
- 安裝
make install
果斷報錯:ModuleNotFoundError: No module named '_ctypes'
解決方法,安裝需要的依賴
yum install libffi-devel
命令安裝成功後,重新執行4、5、6步對應的3個命令。如果沒有其他error拋出的話,到這裏python3已經安裝成功了,但是還需要進行一些配置才能夠使用。
- 創建python3的軟連接
mv /usr/bin/python /usr/bin/python_bak
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
- 執行檢查
- python2與python3版本切換
系統在很多時候仍然需要使用python2,比如yum命令,這時候就需要切換回python2版本。想要爲某個特定用戶修改python版本,只需要在其home目錄下創建一個alias(別名)即可。然後打開該用戶的 ~/.bashrc 文件,添加新的別名信息來修改默認使用的 python版本。
vi ~/.bashrc
# 切換python2
alias python='/usr/bin/python2.7'
# 切換python3
alias python='/usr/bin/python' # 這裏不需要添加python3的版本號,因爲/usr/bin/python已經是python3了
完成上面的操作後,需要重新加載 .bashrc 文件,使操作生效。
$ . ~/.bashrc
再次檢查默認的python版本,切換成功。
安裝Python3.7遇到的坑:
- pip install 找不到ssl
出現這個問題的原因是Python3.7需要更高級的ssl版本,需要升級ssl,研究了半天如何升級ssl最終還是沒有成功。。。
考慮到python2和python3同時擁有pip,可以使用如下方法臨時運行pip install:
python2 -m pip install XXX
python3 -m pip install XXX