系統環境說明:
系統版本 Centos7.3和Centos7.6均可
Python版本 Python2.7——》Python3.7 (其中原來的Python2.7不卸載)
安裝方法:
編譯安裝(暫時沒發現其他安裝方法)
Pythony3.7安裝包下載
https://www.python.org/downloads/release/python-376/
#!/bin/bash #安裝相關依賴 yum install libffi-devel zlib zlib-devel gcc openssl openssl-devel wget -y #下載壓縮包 wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz #解壓 tar -xvf Python-3.7.6.tar.xz cd Python-3.7.6 #安裝在/usr/local/python3.7目錄下 ./configure --prefix=/usr/local/python3.7 make make install cp /usr/bin/python /usr/bin/python_old rm -rf /usr/bin/python #用新版本的python代替舊版本的python ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python #查看版本時候升級成功 python --version #解決升級python后,yum無法正常使用 sed -i 's/python/python_old/g' /usr/bin/yum #解決使用yum時提示except OSError, e: ^ SyntaxError: invalid syntax sed -i 's/python/python_old/g' /usr/libexec/urlgrabber-ext-down #驗證yum是否能正常使用 yum list #驗證yum是否能正常安裝 yum install lsof -y #將新版本的python相關命令加入到系統環境中 echo 'export PATH=$PATH:/usr/local/python3.7/bin/' >> /etc/profile #使文件生效 source /etc/profile
安裝好之后,有時候會報以下錯誤
[root@instance-u5vn5wqr rpm]# yum install lsof -y Loaded plugins: langpacks, versionlock Traceback (most recent call last): File "/usr/bin/yum", line 30, in <module> yummain.user_main(sys.argv[1:], exit_code=True) File "/usr/share/yum-cli/yummain.py", line 375, in user_main errcode = main(args) File "/usr/share/yum-cli/yummain.py", line 170, in main base.getOptionsConfig(args) File "/usr/share/yum-cli/cli.py", line 296, in getOptionsConfig (opts, self.cmds) = self.optparser.setupYumConfig(args=args) File "/usr/share/yum-cli/cli.py", line 2329, in setupYumConfig (opts, cmds) = self.parse_args(args=args) File "/usr/lib64/python2.7/optparse.py", line 1401, in parse_args self.error(str(err)) File "/usr/lib64/python2.7/optparse.py", line 140, in __str__ return _("no such option: %s") % self.opt_str UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 1: ordinal not in range(128) [root@instance-u5vn5wqr rpm]#
解決方法
在 /usr/share/yum-cli/yummain.py和 /usr/lib64/python2.4/encodings/utf_8.py 中加入三行
import sys
reload(sys)
sys.setdefaultencoding('gbk')