自由自在 閑話少敘...
1.下載官方Python包
使用wget下載Python-3.8.2包
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz
2.解壓Python-3.8.2
tar.xz壓縮格式,需要用xz命令解壓為.tar,用tar命令解包,目錄權限不足時需使用:sudo
xz -d Python-3.8.2.tar.xz
tar xvf Python-3.8.2.tar
另外一種格式
wget --no-check-certificate https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
tar xzvf Python-3.8.2.tgz
3.Python-3.8.2安裝到指定目錄
編譯安裝時不要使用“make && make install”
一定要分兩步,先make(編譯),然后再 make install(編譯安裝)。
非root用戶需使用sudo
1. 創建安裝目錄
mkdir /usr/local/python3/
2. 指定安裝目錄
不要在./configure 后添加–enable-optimizations參數,在低版本的gcc版本中帶有–enable-optimizations參數時會出現“Could not import runpy module”安裝錯誤,在下面會介紹
# 進入Python-3.8.2目錄
cd Python-3.8.2
# 配置(指定安裝目錄)
./configure --prefix=/usr/local/python3
3. 編譯
make
4. 編譯安裝
make install
5. 更換系統默認Python版本
(1).備份原系統舊版本python
mv /usr/bin/python /usr/bin/python.bak
mv /usr/bin/pip /usr/bin/pip.bak
(2).配置環境變量:創建新版本Python和pip的軟鏈接
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
5. 查看版本
python -V
6. 修改因更換Python版本影響的其它命令功能
(1).yum
vim /usr/bin/yum
把最頂部的#!/usr/bin/python改為:#!/usr/bin/python2.7
wq 保存,已經是的無須更改
(2).urlgrabber-ext-down
vim /usr/libexec/urlgrabber-ext-down
把最頂部的#!/usr/bin/python改為:#!/usr/bin/python2.7
wq 保存,已經是的無須更改
(2).firewalld
vim /usr/sbin/firewalld
把最頂部的#!/usr/bin/python改為:#!/usr/bin/python2.7
wq 保存,已經是的無須更改
(2).firewall-cm
vim /usr/bin/firewall-cm
把最頂部的#!/usr/bin/python改為:#!/usr/bin/python2.7
wq 保存,已經是的無須更改
7. 出現Could not import runpy module“”安裝錯誤說明
錯誤示例:
make build_all CFLAGS_NODIST=" -fprofile-use -fprofile-correction" LDFLAGS_NODIST=""
make[1]: Entering directory `/usr/local/src/Python-3.8.0'
./python -E -S -m sysconfig --generate-posix-vars ;\
if test $? -ne 0 ; then \
echo "generate-posix-vars failed" ; \
rm -f ./pybuilddir.txt ; \
exit 1 ; \
fi
Could not import runpy module
Traceback (most recent call last):
File "/usr/local/src/Python-3.8.0/Lib/runpy.py", line 15, in <module>
import importlib.util
File "/usr/local/src/Python-3.8.0/Lib/importlib/util.py", line 14, in <module>
from contextlib import contextmanager
File "/usr/local/src/Python-3.8.0/Lib/contextlib.py", line 4, in <module>
import _collections_abc
SystemError: <built-in function compile> returned NULL without setting an error
generate-posix-vars failed
make[1]: *** [pybuilddir.txt] Error 1
make[1]: Leaving directory `/usr/local/src/Python-3.8.0'
make: *** [profile-opt] Error 2
導致原因:
在低版本的gcc中帶有–enable-optimizations參數
解決方法(不推薦使用方法1):
1、升級gcc至高版本,gcc 8.1.0已修復此問題
2、./configure參數中去掉–enable-optimizations
————————————————
原文鏈接:https://blog.csdn.net/IT_Migrant_worker/java/article/details/104725904