centos 7 升級Python3.8


 自由自在 閑話少敘...

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM